# unpatched code clones: 1977

[CVE-2021-0430_1.diff] rw_mfc.cc #4
+#include <log/log.h> + uint16_t saved_length; + saved_length = p_mfc->ndef_length; - /* Skip all reserved and lock bytes */ - while ((offset < len) && (p_mfc->work_offset < p_mfc->ndef_length)) + if (!failed && saved_length >= p_mfc->ndef_length) { + /* Skip all reserved and lock bytes */ + while ((offset < len) && (p_mfc->work_offset < p_mfc->ndef_length)) - { - /* Collect the NDEF Message */ - p_mfc->p_ndef_buffer[p_mfc->work_offset] = p[offset]; - p_mfc->work_offset++; - offset++; + { + /* Collect the NDEF Message */ + p_mfc->p_ndef_buffer[p_mfc->work_offset] = p[offset]; + p_mfc->work_offset++; + offset++; + } + } else { + android_errorWriteLog(0x534e4554, "178725766");
/media/esteban/ACOS/dotOS/vendor/nxp/opensource/commonsys/external/libnfc-nci/SN100x/src/nfc/tags/rw_mfc.cc
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
/* The Ndef Message offset may be present in the read 16 bytes */ offset = p_mfc->ndef_start_pos; if (!rw_nfc_decodeTlv(data)) { failed = true; DLOG_IF(INFO, nfc_debug_enabled) << __func__ << " FAILED finding TLV"; } } /* Skip all reserved and lock bytes */
+ show +
1087
1088
1089
1090
1091
1092
1093
while ((offset < len) && (p_mfc->work_offset < p_mfc->ndef_length)) { /* Collect the NDEF Message */ p_mfc->p_ndef_buffer[p_mfc->work_offset] = p[offset]; p_mfc->work_offset++; offset++;
+ show +
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
} if (p_mfc->work_offset >= p_mfc->ndef_length) { done = true; p_mfc->ndef_status = MFC_NDEF_READ; } else { /* Read next blocks */ if (rw_mfc_readBlock(p_mfc->next_block.block) != NFC_STATUS_OK) { failed = true; DLOG_IF(INFO, nfc_debug_enabled)
/media/esteban/ACOS/dotOS/vendor/nxp/opensource/commonsys/external/libnfc-nci/src/nfc/tags/rw_mfc.cc
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
offset = p_mfc->ndef_start_pos; if (!rw_nfc_decodeTlv(data)) { failed = true; DLOG_IF(INFO, nfc_debug_enabled) << __func__ << " FAILED finding TLV"; } } if (!failed && saved_length >= p_mfc->ndef_length) { /* Skip all reserved and lock bytes */
+ show +
1084
1085
1086
1087
1088
1089
1090
while ((offset < len) && (p_mfc->work_offset < p_mfc->ndef_length)) { /* Collect the NDEF Message */ p_mfc->p_ndef_buffer[p_mfc->work_offset] = p[offset]; p_mfc->work_offset++; offset++;
+ show +
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
} } else { android_errorWriteLog(0x534e4554, "178725766"); } if (p_mfc->work_offset >= p_mfc->ndef_length) { done = true; p_mfc->ndef_status = MFC_NDEF_READ; } else { /* Read next blocks */
/media/esteban/ACOS/dotOS/system/nfc/src/nfc/tags/rw_mfc.cc
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
offset = p_mfc->ndef_start_pos; if (!rw_nfc_decodeTlv(data)) { failed = true; DLOG_IF(INFO, nfc_debug_enabled) << __func__ << " FAILED finding TLV"; } } if (!failed && saved_length >= p_mfc->ndef_length) { /* Skip all reserved and lock bytes */
+ show +
1044
1045
1046
1047
1048
1049
1050
while ((offset < len) && (p_mfc->work_offset < p_mfc->ndef_length)) { /* Collect the NDEF Message */ p_mfc->p_ndef_buffer[p_mfc->work_offset] = p[offset]; p_mfc->work_offset++; offset++;
+ show +
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
} } else { android_errorWriteLog(0x534e4554, "178725766"); } if (p_mfc->work_offset >= p_mfc->ndef_length) { done = true; p_mfc->ndef_status = MFC_NDEF_READ; } else { /* Read next blocks */

[CVE-2020-0057_1.diff] btm_inq.cc #3
- if (inq_res_mode == BTM_INQ_RESULT_EXTENDED && (num_resp > 1)) { - BTM_TRACE_ERROR("btm_process_inq_results() extended results (%d) > 1", - num_resp); - return; + if (inq_res_mode == BTM_INQ_RESULT_EXTENDED) { + if (num_resp > 1) { + BTM_TRACE_ERROR("btm_process_inq_results() extended results (%d) > 1", + num_resp); + return; + } + + constexpr uint16_t extended_inquiry_result_size = 254; + if (hci_evt_len - 1 != extended_inquiry_result_size) { + android_errorWriteLog(0x534e4554, "141620271"); + BTM_TRACE_ERROR("%s: can't fit %d results in %d bytes", __func__, + num_resp, hci_evt_len); + return; + } + } else if (inq_res_mode == BTM_INQ_RESULT_STANDARD || + inq_res_mode == BTM_INQ_RESULT_WITH_RSSI) { + constexpr uint16_t inquiry_result_size = 14; + if (hci_evt_len < num_resp * inquiry_result_size) { + android_errorWriteLog(0x534e4554, "141620271"); + BTM_TRACE_ERROR("%s: can't fit %d results in %d bytes", __func__, + num_resp, hci_evt_len); + return; + }
/media/esteban/ACOS/dotOS/vendor/qcom/opensource/commonsys/system/bt/stack/btm/btm_inq.cc
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
BTM_TRACE_DEBUG( "btm_process_inq_results inq_active:0x%x state:%d inqfilt_active:%d", btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); #endif /* Only process the results if the BR inquiry is still active */ if (!(p_inq->inq_active & BTM_BR_INQ_ACTIVE_MASK)) return; STREAM_TO_UINT8(num_resp, p);
+ show +
1752
1753
1754
1755
if (inq_res_mode == BTM_INQ_RESULT_EXTENDED && (num_resp > 1)) { BTM_TRACE_ERROR("btm_process_inq_results() extended results (%d) > 1", num_resp); return;
+ show +
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
} for (xx = 0; xx < num_resp; xx++) { update = false; /* Extract inquiry results */ STREAM_TO_BDADDR(bda, p); STREAM_TO_UINT8(page_scan_rep_mode, p); STREAM_TO_UINT8(page_scan_per_mode, p); if (inq_res_mode == BTM_INQ_RESULT_STANDARD) {

[CVE-2023-40093_1.diff] BUILD.gn #8
- public_configs = [ - ":gmock_config", - ":gtest_config", - ] + public_deps = [ ":gtest" ] + + public_configs = [ ":gmock_config" ]
/media/esteban/ACOS/dotOS/vendor/qcom/opensource/commonsys/system/bt/build/secondary/third_party/googletest/BUILD.gn
61
62
63
64
65
66
67
68
69
70
sources = [ "googlemock/src/gmock-all.cc", ] # This project includes some stuff form gtest's guts. include_dirs = [ "googlemock", "googlemock/include", ]
+ show +
71
72
73
74
public_configs = [ ":gmock_config", ":gtest_config", ]
+ show +
75
76
77
78
79
80
81
82
83
84
} static_library("gmock_main") { testonly = true sources = [ "googlemock/src/gmock_main.cc", ] deps = [ ":gmock", ":gtest",
/media/esteban/ACOS/dotOS/external/pdfium/third_party/googletest/BUILD.gn
115
116
117
118
119
120
121
122
123
124
"custom/gmock/internal/custom/gmock-port.h", #"src/googlemock/src/gmock-all.cc", # Not needed by our build. "src/googlemock/src/gmock-cardinalities.cc", "src/googlemock/src/gmock-internal-utils.cc", "src/googlemock/src/gmock-matchers.cc", "src/googlemock/src/gmock-spec-builders.cc", "src/googlemock/src/gmock.cc", ]
+ show +
125
126
127
128
public_configs = [ ":gmock_config", ":gtest_config", ]
+ show +
129
130
131
132
133
134
135
136
137
} # Do NOT depend on this directly. Use //testing/gmock:gmock_main instead. # See README.chromium for details. static_library("gmock_main") { testonly = true sources = [ "src/googlemock/src/gmock_main.cc" ] deps = [ ":gmock" ] }
/media/esteban/ACOS/dotOS/external/openscreen/third_party/googletest/BUILD.gn
65
66
67
68
69
70
71
72
73
74
} } source_set("gmock") { testonly = true sources = [ "src/googlemock/include/gmock.h", "src/googlemock/src/gmock-all.cc", ]
+ show +
75
76
77
78
public_configs = [ ":gmock_config", ":gtest_config", ]
+ show +
79
80
81
82
83
84
85
86
87
88
public_deps = [ ":gtest", ] include_dirs = [ "src/googlemock" ] } source_set("gtest") { testonly = true
/media/esteban/ACOS/dotOS/system/bt/build/secondary/third_party/googletest/BUILD.gn
61
62
63
64
65
66
67
68
69
70
sources = [ "googlemock/src/gmock-all.cc", ] # This project includes some stuff form gtest's guts. include_dirs = [ "googlemock", "googlemock/include", ]
+ show +
71
72
73
74
public_configs = [ ":gmock_config", ":gtest_config", ]
+ show +
75
76
77
78
79
80
81
82
83
84
} static_library("gmock_main") { testonly = true sources = [ "googlemock/src/gmock_main.cc", ] deps = [ ":gmock", ":gtest",

[CVE-2015-3842_1.diff] EffectBundle.cpp #2
- if (pCmdData == NULL|| - cmdSize != sizeof(effect_config_t)|| - pReplyData == NULL|| - *replySize != sizeof(int)){ + if (pCmdData == NULL || cmdSize != sizeof(effect_config_t) || + pReplyData == NULL || replySize == NULL || *replySize != sizeof(int)) {
/media/esteban/ACOS/dotOS/hardware/qcom-caf/msm8996/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom-caf/sm8250/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom-caf/sm8150/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom-caf/sm8350/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom/audio/voice_processing/voice_processing.c
533
534
535
536
537
538
539
540
541
542
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
543
544
545
546
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
547
548
549
550
551
552
553
554
555
556
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);

[CVE-2015-3842_1.diff] EffectReverb.cpp #3
- if (pCmdData == NULL || - cmdSize != sizeof(effect_config_t) || - pReplyData == NULL || - *replySize != sizeof(int)) { + if (pCmdData == NULL || cmdSize != sizeof(effect_config_t) || + pReplyData == NULL || replySize == NULL || *replySize != sizeof(int)) {
/media/esteban/ACOS/dotOS/hardware/qcom-caf/msm8996/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom-caf/sm8250/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom-caf/sm8150/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom-caf/sm8350/audio/voice_processing/voice_processing.c
540
541
542
543
544
545
546
547
548
549
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
550
551
552
553
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
554
555
556
557
558
559
560
561
562
563
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);
/media/esteban/ACOS/dotOS/hardware/qcom/audio/voice_processing/voice_processing.c
533
534
535
536
537
538
539
540
541
542
switch (cmdCode) { case EFFECT_CMD_INIT: if (pReplyData == NULL || *replySize != sizeof(int)) return -EINVAL; *(int *)pReplyData = 0; break; case EFFECT_CMD_SET_CONFIG: {
+ show +
543
544
545
546
if (pCmdData == NULL|| cmdSize != sizeof(effect_config_t)|| pReplyData == NULL|| *replySize != sizeof(int)) {
+ show +
547
548
549
550
551
552
553
554
555
556
ALOGV("fx_command() EFFECT_CMD_SET_CONFIG invalid args"); return -EINVAL; } *(int *)pReplyData = session_set_config(effect->session, (effect_config_t *)pCmdData); if (*(int *)pReplyData != 0) break; if (effect->state != EFFECT_STATE_ACTIVE) *(int *)pReplyData = effect_set_state(effect, EFFECT_STATE_CONFIG);

[CVE-2022-20416_1.diff] hidlutils_tests.cpp #2
+static AudioProfile generateValidAudioProfile() { + AudioProfile profile; + profile.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT); + profile.sampleRates.resize(2); + profile.sampleRates[0] = 44100; + profile.sampleRates[1] = 48000; + profile.channelMasks.resize(2); + profile.channelMasks[0] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_MONO); + profile.channelMasks[1] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO); + return profile; +} + + + // The size of audio profile must not be greater than the maximum value. + invalid.resize(0); + invalid.resize(AUDIO_PORT_MAX_AUDIO_PROFILES + 1); + for (size_t i = 0; i < invalid.size(); ++i) { + invalid[i].audioCapability.profile(generateValidAudioProfile()); + invalid[i].encapsulationType = + toString(xsd::AudioEncapsulationType::AUDIO_ENCAPSULATION_TYPE_NONE); + } + EXPECT_EQ(BAD_VALUE, HidlUtils::audioTransportsToHal(invalid, &halInvalid)); + + // The size of extra audio descriptors must not be greater than the maximum value. + invalid.resize(0); + invalid.resize(AUDIO_PORT_MAX_EXTRA_AUDIO_DESCRIPTORS + 1); + for (size_t i = 0; i < invalid.size(); ++i) { + invalid[i].audioCapability.edid({0x11, 0x06, 0x01}); + invalid[i].encapsulationType = + toString(xsd::AudioEncapsulationType::AUDIO_ENCAPSULATION_TYPE_IEC61937); + } + EXPECT_EQ(BAD_VALUE, HidlUtils::audioTransportsToHal(invalid, &halInvalid)); - AudioProfile profile; - profile.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT); - profile.sampleRates.resize(2); - profile.sampleRates[0] = 44100; - profile.sampleRates[1] = 48000; - profile.channelMasks.resize(2); - profile.channelMasks[0] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_MONO); - profile.channelMasks[1] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO); - transports[0].audioCapability.profile(profile); + transports[0].audioCapability.profile(generateValidAudioProfile());
/media/esteban/ACOS/dotOS/hardware/interfaces/audio/common/all-versions/default/tests/hidlutils_tests.cpp
971
972
973
974
975
976
977
978
979
980
invalid[0].audioCapability.profile(invalidProfile); invalid[0].encapsulationType = "random string"; invalid[0].audioCapability.edid(hidl_vec<uint8_t>(EXTRA_AUDIO_DESCRIPTOR_SIZE + 1)); invalid[1].encapsulationType = "random string"; EXPECT_EQ(BAD_VALUE, HidlUtils::audioTransportsToHal(invalid, &halInvalid)); } TEST(HidlUtils, ConvertAudioTransports) { hidl_vec<AudioTransport> transports; transports.resize(2);
+ show +
981
982
983
984
985
986
987
988
989
AudioProfile profile; profile.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT); profile.sampleRates.resize(2); profile.sampleRates[0] = 44100; profile.sampleRates[1] = 48000; profile.channelMasks.resize(2); profile.channelMasks[0] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_MONO); profile.channelMasks[1] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO); transports[0].audioCapability.profile(profile);
+ show +
990
991
992
993
994
995
996
997
998
999
hidl_vec<uint8_t> shortAudioDescriptor({0x11, 0x06, 0x01}); transports[0].encapsulationType = toString(xsd::AudioEncapsulationType::AUDIO_ENCAPSULATION_TYPE_NONE); transports[1].audioCapability.edid(std::move(shortAudioDescriptor)); transports[1].encapsulationType = toString(xsd::AudioEncapsulationType::AUDIO_ENCAPSULATION_TYPE_IEC61937); struct audio_port_v7 halPort; EXPECT_EQ(NO_ERROR, HidlUtils::audioTransportsToHal(transports, &halPort)); hidl_vec<AudioTransport> transportsBack; EXPECT_EQ(NO_ERROR,

[CVE-2020-0478_1.diff] gtest-death-test.h #3
-// TODO(wan@google.com): make thread-safe death tests search the PATH. -# define ASSERT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) +#define ASSERT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) -// test case, if any: -# define EXPECT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) +// test suite, if any: +#define EXPECT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) -# define ASSERT_DEATH(statement, regex) \ - ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +#define ASSERT_DEATH(statement, regex) \ + ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) -// test case, if any: -# define EXPECT_DEATH(statement, regex) \ - EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +// test suite, if any: +#define EXPECT_DEATH(statement, regex) \ + EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest-death-test.h
159
160
161
162
163
164
165
166
167
168
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // FIXME: make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
187
188
189
190
191
192
193
194
195
196
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-death-test.h
147
148
149
150
151
152
153
154
155
156
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
175
176
177
178
179
180
181
182
183
184
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: #define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. #define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: #define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private:

[CVE-2020-0470_1.diff] gtest-death-test.h #3
-// TODO(wan@google.com): make thread-safe death tests search the PATH. -# define ASSERT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) +#define ASSERT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) -// test case, if any: -# define EXPECT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) +// test suite, if any: +#define EXPECT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) -# define ASSERT_DEATH(statement, regex) \ - ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +#define ASSERT_DEATH(statement, regex) \ + ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) -// test case, if any: -# define EXPECT_DEATH(statement, regex) \ - EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +// test suite, if any: +#define EXPECT_DEATH(statement, regex) \ + EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); ExitedWithCode(const ExitedWithCode&) = default; void operator=(const ExitedWithCode& other) = delete; bool operator()(int exit_status) const;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest-death-test.h
159
160
161
162
163
164
165
166
167
168
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // FIXME: make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
187
188
189
190
191
192
193
194
195
196
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-death-test.h
147
148
149
150
151
152
153
154
155
156
// path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // TODO(wan@google.com): make thread-safe death tests search the PATH. // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
175
176
177
178
179
180
181
182
183
184
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: # define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. # define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: # define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private: // No implementation - assignment is unsupported.
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest-death-test.h
158
159
160
161
162
163
164
165
166
167
// invoke the test program via a path that contains at least one // path separator (e.g. path/to/foo_test and // /absolute/path/to/bar_test are fine, but foo_test is not). This // is rarely a problem as people usually don't put the test binary // directory in PATH. // // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex.
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#define ASSERT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test suite, if any: #define EXPECT_EXIT(statement, predicate, regex) \ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. #define ASSERT_DEATH(statement, regex) \ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test suite, if any: #define EXPECT_DEATH(statement, regex) \ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+ show +
186
187
188
189
190
191
192
193
194
195
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; private:

[CVE-2020-0478_1.diff] gtest.h #19
- TestProperty(const std::string& a_key, const std::string& a_value) : - key_(a_key), value_(a_value) { - } + TestProperty(const std::string &a_key, const std::string &a_value) + : key_(a_key), value_(a_value) {} - const char* key() const { - return key_.c_str(); - } + const char *key() const { return key_.c_str(); } - const char* value() const { - return value_.c_str(); - } + const char *value() const { return value_.c_str(); } - void SetValue(const std::string& new_value) { - value_ = new_value; - } + void SetValue(const std::string &new_value) { value_ = new_value; }
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
481
482
483
484
485
486
487
488
489
490
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
508
509
510
511
512
513
514
515
516
517
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
19090
19091
19092
19093
19094
19095
19096
19097
19098
19099
19100
19101
19102
19103
19104
19105
19106
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
19107
19108
19109
19110
19111
19112
19113
19114
19115
19116
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
519
520
521
522
523
524
525
526
527
528
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
546
547
548
549
550
551
552
553
554
555
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
520
521
522
523
524
525
526
527
528
529
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
547
548
549
550
551
552
553
554
555
556
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of

[CVE-2020-0478_1.diff] gtest.h #21
- void RecordProperty(const std::string& xml_element, - const TestProperty& test_property); + void RecordProperty(const std::string &xml_element, + const TestProperty &test_property); - // testcase tags. Returns true if the property is valid. - // TODO(russr): Validate attribute names are legal and human readable. - static bool ValidateTestProperty(const std::string& xml_element, - const TestProperty& test_property); + // testsuite tags. Returns true if the property is valid. + // FIXME: Validate attribute names are legal and human readable. + static bool ValidateTestProperty(const std::string &xml_element, + const TestProperty &test_property); - void AddTestPartResult(const TestPartResult& test_part_result); + void AddTestPartResult(const TestPartResult &test_part_result);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
582
583
584
585
586
587
588
589
590
591
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
592
593
594
595
596
597
598
599
600
601
602
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // TODO(russr): Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
603
604
605
606
607
608
609
610
611
612
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
620
621
622
623
624
625
626
627
628
629
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
630
631
632
633
634
635
636
637
638
639
640
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
641
642
643
644
645
646
647
648
649
650
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19181
19182
19183
19184
19185
19186
19187
19188
19189
19190
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
19191
19192
19193
19194
19195
19196
19197
19198
19199
19200
19201
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // TODO(russr): Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
19202
19203
19204
19205
19206
19207
19208
19209
19210
19211
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
620
621
622
623
624
625
626
627
628
629
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
630
631
632
633
634
635
636
637
638
639
640
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
641
642
643
644
645
646
647
648
649
650
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
17976
17977
17978
17979
17980
17981
17982
17983
17984
17985
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995
17996
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // TODO(russr): Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
17997
17998
17999
18000
18001
18002
18003
18004
18005
18006
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
631
632
633
634
635
636
637
638
639
640
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
641
642
643
644
645
646
647
648
649
650
651
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
652
653
654
655
656
657
658
659
660
661
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest.h
625
626
627
628
629
630
631
632
633
634
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
635
636
637
638
639
640
641
642
643
644
645
void RecordProperty(const std::string &xml_element, const TestProperty &test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string &xml_element, const TestProperty &test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult &test_part_result);
+ show +
646
647
648
649
650
651
652
653
654
655
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();

[CVE-2020-0478_1.diff] gtest.h #48
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); - +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, - const wchar_t* s2); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, + const char *s2_expression, + const wchar_t *s1, const wchar_t *s2); -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, - const wchar_t* s2); +GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, + const char *s2_expression, + const wchar_t *s1, const wchar_t *s2);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
20126
20127
20128
20129
20130
20131
20132
20133
20134
20135
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
20136
20137
20138
20139
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
20163
20164
20165
20166
20167
20168
20169
20170
20171
20172
20173
20174
20175
20176
20177
20178
20179
20180
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified

[CVE-2020-0478_1.diff] gtest.h #50
-AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, - const char* rhs_expression, - RawType lhs_value, - RawType rhs_value) { +AssertionResult CmpHelperFloatingPointEQ(const char *lhs_expression, + const char *rhs_expression, + RawType lhs_value, RawType rhs_value) {
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1631
1632
1633
1634
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1710
1711
1712
1713
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
20220
20221
20222
20223
20224
20225
20226
20227
20228
20229
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
20230
20231
20232
20233
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
20234
20235
20236
20237
20238
20239
20240
20241
20242
20243
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1682
1683
1684
1685
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1730
1731
1732
1733
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;

[CVE-2020-0478_1.diff] gtest.h #69
-# define EXPECT_HRESULT_SUCCEEDED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) +#define EXPECT_HRESULT_SUCCEEDED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -# define ASSERT_HRESULT_SUCCEEDED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) +#define ASSERT_HRESULT_SUCCEEDED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -# define EXPECT_HRESULT_FAILED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) +#define EXPECT_HRESULT_FAILED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) -# define ASSERT_HRESULT_FAILED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) +#define ASSERT_HRESULT_FAILED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
21021
21022
21023
21024
21025
21026
21027
21028
21029
21030
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
21031
21032
21033
21034
21035
21036
21037
21038
21039
21040
21041
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
21042
21043
21044
21045
21046
21047
21048
21049
21050
21051
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
19894
19895
19896
19897
19898
19899
19900
19901
19902
19903
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
19904
19905
19906
19907
19908
19909
19910
19911
19912
19913
19914
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
19915
19916
19917
19918
19919
19920
19921
19922
19923
19924
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest.h
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest.h
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
#define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) #define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) #define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) #define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //

[CVE-2020-0470_1.diff] gtest.h #19
- TestProperty(const std::string& a_key, const std::string& a_value) : - key_(a_key), value_(a_value) { - } + TestProperty(const std::string &a_key, const std::string &a_value) + : key_(a_key), value_(a_value) {} - const char* key() const { - return key_.c_str(); - } + const char *key() const { return key_.c_str(); } - const char* value() const { - return value_.c_str(); - } + const char *value() const { return value_.c_str(); } - void SetValue(const std::string& new_value) { - value_ = new_value; - } + void SetValue(const std::string &new_value) { value_ = new_value; }
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
529
530
531
532
533
534
535
536
537
538
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
556
557
558
559
560
561
562
563
564
565
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
481
482
483
484
485
486
487
488
489
490
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
508
509
510
511
512
513
514
515
516
517
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
516
517
518
519
520
521
522
523
524
525
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
543
544
545
546
547
548
549
550
551
552
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
19090
19091
19092
19093
19094
19095
19096
19097
19098
19099
19100
19101
19102
19103
19104
19105
19106
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
19107
19108
19109
19110
19111
19112
19113
19114
19115
19116
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
519
520
521
522
523
524
525
526
527
528
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
546
547
548
549
550
551
552
553
554
555
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
520
521
522
523
524
525
526
527
528
529
// A copyable object representing a user specified test property which can be // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. class TestProperty { public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object.
+ show +
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
TestProperty(const std::string& a_key, const std::string& a_value) : key_(a_key), value_(a_value) { } // Gets the user supplied key. const char* key() const { return key_.c_str(); } // Gets the user supplied value. const char* value() const { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. void SetValue(const std::string& new_value) { value_ = new_value;
+ show +
547
548
549
550
551
552
553
554
555
556
} private: // The key supplied by the user. std::string key_; // The value supplied by the user. std::string value_; }; // The result of a single Test. This includes a list of

[CVE-2020-0470_1.diff] gtest.h #21
- void RecordProperty(const std::string& xml_element, - const TestProperty& test_property); + void RecordProperty(const std::string &xml_element, + const TestProperty &test_property); - // testcase tags. Returns true if the property is valid. - // TODO(russr): Validate attribute names are legal and human readable. - static bool ValidateTestProperty(const std::string& xml_element, - const TestProperty& test_property); + // testsuite tags. Returns true if the property is valid. + // FIXME: Validate attribute names are legal and human readable. + static bool ValidateTestProperty(const std::string &xml_element, + const TestProperty &test_property); - void AddTestPartResult(const TestPartResult& test_part_result); + void AddTestPartResult(const TestPartResult &test_part_result);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
627
628
629
630
631
632
633
634
635
636
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
637
638
639
640
641
642
643
644
645
646
647
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
648
649
650
651
652
653
654
655
656
657
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
640
641
642
643
644
645
646
647
648
649
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
650
651
652
653
654
655
656
657
658
659
660
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
661
662
663
664
665
666
667
668
669
670
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
582
583
584
585
586
587
588
589
590
591
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
592
593
594
595
596
597
598
599
600
601
602
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // TODO(russr): Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
603
604
605
606
607
608
609
610
611
612
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
620
621
622
623
624
625
626
627
628
629
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
630
631
632
633
634
635
636
637
638
639
640
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
641
642
643
644
645
646
647
648
649
650
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19181
19182
19183
19184
19185
19186
19187
19188
19189
19190
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
19191
19192
19193
19194
19195
19196
19197
19198
19199
19200
19201
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // TODO(russr): Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
19202
19203
19204
19205
19206
19207
19208
19209
19210
19211
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
620
621
622
623
624
625
626
627
628
629
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
630
631
632
633
634
635
636
637
638
639
640
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
641
642
643
644
645
646
647
648
649
650
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
17976
17977
17978
17979
17980
17981
17982
17983
17984
17985
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995
17996
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // TODO(russr): Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
17997
17998
17999
18000
18001
18002
18003
18004
18005
18006
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
631
632
633
634
635
636
637
638
639
640
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
641
642
643
644
645
646
647
648
649
650
651
void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result);
+ show +
652
653
654
655
656
657
658
659
660
661
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest.h
625
626
627
628
629
630
631
632
633
634
// Sets the elapsed time. void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved // key names). If a property is already recorded for the same key, the // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation.
+ show +
635
636
637
638
639
640
641
642
643
644
645
void RecordProperty(const std::string &xml_element, const TestProperty &test_property); // Adds a failure if the key is a reserved attribute of Google Test // testsuite tags. Returns true if the property is valid. // FIXME: Validate attribute names are legal and human readable. static bool ValidateTestProperty(const std::string &xml_element, const TestProperty &test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult &test_part_result);
+ show +
646
647
648
649
650
651
652
653
654
655
// Returns the death test count. int death_test_count() const { return death_test_count_; } // Increments the death test count, returning the new count. int increment_death_test_count() { return ++death_test_count_; } // Clears the test part results. void ClearTestPartResults();

[CVE-2020-0470_1.diff] gtest.h #48
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); - +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char *s1_expression, + const char *s2_expression, + const char *s1, const char *s2); -GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, - const wchar_t* s2); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, + const char *s2_expression, + const wchar_t *s1, const wchar_t *s2); -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, - const wchar_t* s2); +GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, + const char *s2_expression, + const wchar_t *s1, const wchar_t *s2);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >) #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
20126
20127
20128
20129
20130
20131
20132
20133
20134
20135
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
20136
20137
20138
20139
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
20163
20164
20165
20166
20167
20168
20169
20170
20171
20172
20173
20174
20175
20176
20177
20178
20179
20180
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
// Implements the helper function for {ASSERT|EXPECT}_GE GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2);
+ show +
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by // themselves. They check whether needle is a substring of haystack // (NULL is considered a substring of itself only), and return an // appropriate error message when they fail. // // The {needle,haystack}_expr arguments are the stringified

[CVE-2020-0470_1.diff] gtest.h #50
-AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, - const char* rhs_expression, - RawType lhs_value, - RawType rhs_value) { +AssertionResult CmpHelperFloatingPointEQ(const char *lhs_expression, + const char *rhs_expression, + RawType lhs_value, RawType rhs_value) {
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1728
1729
1730
1731
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1733
1734
1735
1736
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1631
1632
1633
1634
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1710
1711
1712
1713
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
20220
20221
20222
20223
20224
20225
20226
20227
20228
20229
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
20230
20231
20232
20233
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
20234
20235
20236
20237
20238
20239
20240
20241
20242
20243
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1682
1683
1684
1685
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
namespace internal { // Helper template function for comparing floating-points. // // Template parameter: // // RawType: the raw floating-point type (either float or double) // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType>
+ show +
1730
1731
1732
1733
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression, const char* rhs_expression, RawType lhs_value, RawType rhs_value) {
+ show +
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value); if (lhs.AlmostEquals(rhs)) { return AssertionSuccess(); } ::std::stringstream lhs_ss; lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << lhs_value;

[CVE-2020-0470_1.diff] gtest.h #69
-# define EXPECT_HRESULT_SUCCEEDED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) +#define EXPECT_HRESULT_SUCCEEDED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -# define ASSERT_HRESULT_SUCCEEDED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) +#define ASSERT_HRESULT_SUCCEEDED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -# define EXPECT_HRESULT_FAILED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) +#define EXPECT_HRESULT_FAILED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) -# define ASSERT_HRESULT_FAILED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) +#define ASSERT_HRESULT_FAILED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/gtest.h
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
21021
21022
21023
21024
21025
21026
21027
21028
21029
21030
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
21031
21032
21033
21034
21035
21036
21037
21038
21039
21040
21041
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
21042
21043
21044
21045
21046
21047
21048
21049
21050
21051
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
19894
19895
19896
19897
19898
19899
19900
19901
19902
19903
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
19904
19905
19906
19907
19908
19909
19910
19911
19912
19913
19914
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
19915
19916
19917
19918
19919
19920
19921
19922
19923
19924
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest.h
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) # define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) # define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest.h
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
// Macros that test for HRESULT failure and success, these are only useful // on Windows, and rely on Windows SDK macros and APIs to compile. // // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) // // When expr unexpectedly fails or succeeds, Google Test prints the // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code.
+ show +
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
#define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) #define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) #define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) #define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+ show +
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. // // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); // // Examples: //

[CVE-2020-0478_1.diff] gtest-string.h #5
- static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, - const wchar_t* rhs); + static bool CaseInsensitiveWideCStringEquals(const wchar_t *lhs, + const wchar_t *rhs); - // Returns true iff the given string ends with the given suffix, ignoring - // case. Any string is considered to end with an empty suffix. - static bool EndsWithCaseInsensitive( - const std::string& str, const std::string& suffix); + // Returns true if and only if the given string ends with the given suffix, + // ignoring case. Any string is considered to end with an empty suffix. + static bool EndsWithCaseInsensitive(const std::string &str, + const std::string &suffix);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-string.h
129
130
131
132
133
134
135
136
137
138
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
139
140
141
142
143
144
145
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
146
147
148
149
150
151
152
153
154
155
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-string.h
129
130
131
132
133
134
135
136
137
138
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
139
140
141
142
143
144
145
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
146
147
148
149
150
151
152
153
154
155
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
4238
4239
4240
4241
4242
4243
4244
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-string.h
129
130
131
132
133
134
135
136
137
138
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
139
140
141
142
143
144
145
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
146
147
148
149
150
151
152
153
154
155
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
3464
3465
3466
3467
3468
3469
3470
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-string.h
130
131
132
133
134
135
136
137
138
139
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
140
141
142
143
144
145
146
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
147
148
149
150
151
152
153
154
155
156
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(UInt32 value);

[CVE-2020-0470_1.diff] gtest-string.h #5
- static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, - const wchar_t* rhs); + static bool CaseInsensitiveWideCStringEquals(const wchar_t *lhs, + const wchar_t *rhs); - // Returns true iff the given string ends with the given suffix, ignoring - // case. Any string is considered to end with an empty suffix. - static bool EndsWithCaseInsensitive( - const std::string& str, const std::string& suffix); + // Returns true if and only if the given string ends with the given suffix, + // ignoring case. Any string is considered to end with an empty suffix. + static bool EndsWithCaseInsensitive(const std::string &str, + const std::string &suffix);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(uint32_t value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-string.h
131
132
133
134
135
136
137
138
139
140
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
141
142
143
144
145
146
147
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
148
149
150
151
152
153
154
155
156
157
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value to given width with leading zeros. static std::string FormatIntWidthN(int value, int width); // Formats an int value as "%X". static std::string FormatHexInt(int value);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-string.h
129
130
131
132
133
134
135
136
137
138
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
139
140
141
142
143
144
145
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
146
147
148
149
150
151
152
153
154
155
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-string.h
129
130
131
132
133
134
135
136
137
138
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
139
140
141
142
143
144
145
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
146
147
148
149
150
151
152
153
154
155
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
4238
4239
4240
4241
4242
4243
4244
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-string.h
129
130
131
132
133
134
135
136
137
138
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
139
140
141
142
143
144
145
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
146
147
148
149
150
151
152
153
154
155
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
3464
3465
3466
3467
3468
3469
3470
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats a byte as "%02X". static std::string FormatByte(unsigned char value);
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-string.h
130
131
132
133
134
135
136
137
138
139
// // Unlike wcscasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL wide C string, // including the empty string. // NB: The implementations on different platforms slightly differ. // On windows, this method uses _wcsicmp which compares according to LC_CTYPE // environment variable. On GNU platform this method uses wcscasecmp // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale.
+ show +
140
141
142
143
144
145
146
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true if and only if the given string ends with the given suffix, // ignoring case. Any string is considered to end with an empty suffix. static bool EndsWithCaseInsensitive( const std::string& str, const std::string& suffix);
+ show +
147
148
149
150
151
152
153
154
155
156
// Formats an int value as "%02d". static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); // Formats an int value as "%X". static std::string FormatHexUInt32(UInt32 value);

[CVE-2020-0478_1.diff] gtest-filepath.h #3
- static FilePath MakeFileName(const FilePath& directory, - const FilePath& base_name, - int number, - const char* extension); + static FilePath MakeFileName(const FilePath &directory, + const FilePath &base_name, int number, + const char *extension); - static FilePath ConcatPaths(const FilePath& directory, - const FilePath& relative_path); + static FilePath ConcatPaths(const FilePath &directory, + const FilePath &relative_path);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-filepath.h
77
78
79
80
81
82
83
84
85
86
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
87
88
89
90
91
92
93
94
95
96
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
97
98
99
100
101
102
103
104
105
106
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/internal/gtest-filepath.h
81
82
83
84
85
86
87
88
89
90
String ToString() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
91
92
93
94
95
96
97
98
99
100
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
101
102
103
104
105
106
107
108
109
110
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,

[CVE-2020-0470_1.diff] gtest-filepath.h #3
- static FilePath MakeFileName(const FilePath& directory, - const FilePath& base_name, - int number, - const char* extension); + static FilePath MakeFileName(const FilePath &directory, + const FilePath &base_name, int number, + const char *extension); - static FilePath ConcatPaths(const FilePath& directory, - const FilePath& relative_path); + static FilePath ConcatPaths(const FilePath &directory, + const FilePath &relative_path);
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-filepath.h
77
78
79
80
81
82
83
84
85
86
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
87
88
89
90
91
92
93
94
95
96
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
97
98
99
100
101
102
103
104
105
106
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/internal/gtest-filepath.h
81
82
83
84
85
86
87
88
89
90
String ToString() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
91
92
93
94
95
96
97
98
99
100
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
101
102
103
104
105
106
107
108
109
110
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-filepath.h
80
81
82
83
84
85
86
87
88
89
const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); // Given directory = "dir", base_name = "test", number = 0, // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /.
+ show +
90
91
92
93
94
95
96
97
98
99
static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path);
+ show +
100
101
102
103
104
105
106
107
108
109
// Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or // directory/base_name_<number>.extension if directory/base_name.extension // already exists. The number will be incremented until a pathname is found // that does not already exist. // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. static FilePath GenerateUniqueFileName(const FilePath& directory,

[CVE-2020-0478_1.diff] gtest-port.h #20
-# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ - GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) -# define GTEST_INTENTIONAL_CONST_COND_POP_() \ - GTEST_DISABLE_MSC_WARNINGS_POP_() +#define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ + GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) +#define GTEST_INTENTIONAL_CONST_COND_POP_() GTEST_DISABLE_MSC_WARNINGS_POP_()
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
890
891
892
893
894
895
896
897
898
899
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
900
901
902
903
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
904
905
906
907
908
909
910
911
912
913
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-port.h
699
700
701
702
703
704
705
706
707
708
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
709
710
711
712
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
713
714
715
716
717
718
719
720
721
722
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
2172
2173
2174
2175
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-port.h
945
946
947
948
949
950
951
952
953
954
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
955
956
957
958
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
959
960
961
962
963
964
965
966
967
968
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-port.h
699
700
701
702
703
704
705
706
707
708
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
709
710
711
712
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
713
714
715
716
717
718
719
720
721
722
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1

[CVE-2020-0478_1.diff] gtest-port.h #26
-# define GTEST_CHECK_(condition) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::IsTrue(condition)) \ - ; \ - else \ - GTEST_LOG_(FATAL) << "Condition " #condition " failed. " +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1304
1305
1306
1307
1308
1309
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-port.h
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1012
1013
1014
1015
1016
1017
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
2570
2571
2572
2573
2574
2575
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-port.h
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1382
1383
1384
1385
1386
1387
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
2167
2168
2169
2170
2171
2172
#define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
// An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ << gtest_error
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
947
948
949
950
951
952
953
954
955
956
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
957
958
959
960
961
962
#define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
963
964
965
966
967
968
969
970
971
972
// An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ << gtest_error
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h
972
973
974
975
976
977
978
979
980
981
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
982
983
984
985
986
987
#define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
988
989
990
991
992
993
994
995
996
997
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " << gtest_error

[CVE-2020-0470_1.diff] gtest-port.h #20
-# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ - GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) -# define GTEST_INTENTIONAL_CONST_COND_POP_() \ - GTEST_DISABLE_MSC_WARNINGS_POP_() +#define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ + GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) +#define GTEST_INTENTIONAL_CONST_COND_POP_() GTEST_DISABLE_MSC_WARNINGS_POP_()
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
702
703
704
705
706
707
708
709
710
711
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
712
713
714
715
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
716
717
718
719
720
721
722
723
724
725
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-port.h
721
722
723
724
725
726
727
728
729
730
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
731
732
733
734
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
735
736
737
738
739
740
741
742
743
744
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
890
891
892
893
894
895
896
897
898
899
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
900
901
902
903
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
904
905
906
907
908
909
910
911
912
913
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-port.h
699
700
701
702
703
704
705
706
707
708
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
709
710
711
712
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
713
714
715
716
717
718
719
720
721
722
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
2172
2173
2174
2175
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-port.h
945
946
947
948
949
950
951
952
953
954
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
955
956
957
958
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
959
960
961
962
963
964
965
966
967
968
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-port.h
699
700
701
702
703
704
705
706
707
708
#endif // __GNUC__ && !COMPILER_ICC // MS C++ compiler emits warning when a conditional expression is compile time // constant. In some contexts this warning is false positive and needs to be // suppressed. Use the following two macros in such cases: // // GTEST_INTENTIONAL_CONST_COND_PUSH_() // while (true) { // GTEST_INTENTIONAL_CONST_COND_POP_() // }
+ show +
709
710
711
712
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127) # define GTEST_INTENTIONAL_CONST_COND_POP_() \ GTEST_DISABLE_MSC_WARNINGS_POP_()
+ show +
713
714
715
716
717
718
719
720
721
722
// Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally // does not exist on any other system. #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. # if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. # define GTEST_HAS_SEH 1

[CVE-2020-0470_1.diff] gtest-port.h #26
-# define GTEST_CHECK_(condition) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::IsTrue(condition)) \ - ; \ - else \ - GTEST_LOG_(FATAL) << "Condition " #condition " failed. " +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/1/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/module_sdk/art/current/sdk/common_os/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/googletest/googletest/include/gtest/internal/gtest-port.h
998
999
1000
1001
1002
1003
1004
1005
1006
1007
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1008
1009
1010
1011
1012
1013
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1304
1305
1306
1307
1308
1309
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/internal/gtest-port.h
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1012
1013
1014
1015
1016
1017
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
2570
2571
2572
2573
2574
2575
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-port.h
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
1382
1383
1384
1385
1386
1387
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
2167
2168
2169
2170
2171
2172
#define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
// An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ << gtest_error
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
947
948
949
950
951
952
953
954
955
956
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
957
958
959
960
961
962
#define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
963
964
965
966
967
968
969
970
971
972
// An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ << gtest_error
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/internal/gtest-port.h
981
982
983
984
985
986
987
988
989
990
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
991
992
993
994
995
996
# define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
997
998
999
1000
1001
1002
1003
1004
1005
1006
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h
972
973
974
975
976
977
978
979
980
981
// Synopsys: // GTEST_CHECK_(boolean_condition); // or // GTEST_CHECK_(boolean_condition) << "Additional message"; // // This checks the condition and if the condition is not satisfied // it prints message about the condition violation, including the // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not.
+ show +
982
983
984
985
986
987
#define GTEST_CHECK_(condition) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::IsTrue(condition)) \ ; \ else \ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+ show +
988
989
990
991
992
993
994
995
996
997
#endif // !defined(GTEST_CHECK_) // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ if (const int gtest_error = (posix_call)) \ GTEST_LOG_(FATAL) << #posix_call << "failed with error " << gtest_error

[CVE-2023-40093_1.diff] cmspack.c #26
-cmsUInt8Number* Unroll4WordsReverse(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4WordsReverse(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
562
563
564
565
566
567
568
569
570
571
wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
572
573
574
575
cmsUInt8Number* Unroll4WordsReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
576
577
578
579
580
581
582
583
584
585
{ wIn[0] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // C wIn[1] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // M wIn[2] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // Y wIn[3] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cfwl_combobox.cpp #3
-CFWL_ComboBox::CFWL_ComboBox(const CFWL_App* app) - : CFWL_Widget(app, pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr) { - InitComboList(); - InitComboEdit(); -} +CFWL_ComboBox::CFWL_ComboBox(CFWL_App* app) + : CFWL_Widget(app, Properties(), nullptr), + m_pEdit(cppgc::MakeGarbageCollected<CFWL_ComboEdit>( + app->GetHeap()->GetAllocationHandle(), + app, + Properties(), + this)), + m_pListBox(cppgc::MakeGarbageCollected<CFWL_ComboList>( + app->GetHeap()->GetAllocationHandle(), + app, + Properties{FWL_STYLE_WGT_Border | FWL_STYLE_WGT_VScroll, 0, + FWL_STATE_WGT_Invisible}, + this)) {} +void CFWL_ComboBox::Trace(cppgc::Visitor* visitor) const { + CFWL_Widget::Trace(visitor); + visitor->Trace(m_pEdit); + visitor->Trace(m_pListBox); +} +
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_combobox.cpp
22
23
24
25
26
27
28
29
30
31
#include "xfa/fwl/cfwl_messagemouse.h" #include "xfa/fwl/cfwl_messagesetfocus.h" #include "xfa/fwl/cfwl_notedriver.h" #include "xfa/fwl/cfwl_themebackground.h" #include "xfa/fwl/cfwl_themepart.h" #include "xfa/fwl/cfwl_themetext.h" #include "xfa/fwl/cfwl_widgetmgr.h" #include "xfa/fwl/fwl_widgetdef.h" #include "xfa/fwl/ifwl_themeprovider.h"
+ show +
32
33
34
35
CFWL_ComboBox::CFWL_ComboBox(const CFWL_App* app) : CFWL_Widget(app, pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr) { InitComboList(); InitComboEdit();
+ show +
36
37
38
39
40
41
42
43
44
45
} CFWL_ComboBox::~CFWL_ComboBox() = default; FWL_Type CFWL_ComboBox::GetClassID() const { return FWL_Type::ComboBox; } void CFWL_ComboBox::AddString(const WideString& wsText) { m_pListBox->AddString(wsText);

[CVE-2020-0478_1.diff] gtest.h #47
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ -template <typename T1, typename T2>\ -AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ - const T1& val1, const T2& val2) {\ - if (val1 op val2) {\ - return AssertionSuccess();\ - } else {\ - return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ - }\ -}\ -GTEST_API_ AssertionResult CmpHelper##op_name(\ - const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) +#define GTEST_IMPL_CMP_HELPER_(op_name, op) \ + template <typename T1, typename T2> \ + AssertionResult CmpHelper##op_name(const char *expr1, const char *expr2, \ + const T1 &val1, const T2 &val2) { \ + if (val1 op val2) { \ + return AssertionSuccess(); \ + } else { \ + return CmpHelperOpFailure(expr1, expr2, val1, val2, #op); \ + } \ + } \ + GTEST_API_ AssertionResult CmpHelper##op_name( \ + const char *expr1, const char *expr2, BiggestInt val1, BiggestInt val2)
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
20095
20096
20097
20098
20099
20100
20101
20102
20103
20104
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
20105
20106
20107
20108
20109
20110
20111
20112
20113
20114
20115
20116
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
20117
20118
20119
20120
20121
20122
20123
20124
20125
20126
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest.h
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
#define GTEST_IMPL_CMP_HELPER_(op_name, op) \ template <typename T1, typename T2> \ AssertionResult CmpHelper##op_name(const char *expr1, const char *expr2, \ const T1 &val1, const T2 &val2) { \ if (val1 op val2) { \ return AssertionSuccess(); \ } else { \ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op); \ } \ } \ GTEST_API_ AssertionResult CmpHelper##op_name( \ const char *expr1, const char *expr2, BiggestInt val1, BiggestInt val2)
+ show +
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE

[CVE-2020-0470_1.diff] gtest.h #47
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ -template <typename T1, typename T2>\ -AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ - const T1& val1, const T2& val2) {\ - if (val1 op val2) {\ - return AssertionSuccess();\ - } else {\ - return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ - }\ -}\ -GTEST_API_ AssertionResult CmpHelper##op_name(\ - const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) +#define GTEST_IMPL_CMP_HELPER_(op_name, op) \ + template <typename T1, typename T2> \ + AssertionResult CmpHelper##op_name(const char *expr1, const char *expr2, \ + const T1 &val1, const T2 &val2) { \ + if (val1 op val2) { \ + return AssertionSuccess(); \ + } else { \ + return CmpHelperOpFailure(expr1, expr2, val1, val2, #op); \ + } \ + } \ + GTEST_API_ AssertionResult CmpHelper##op_name( \ + const char *expr1, const char *expr2, BiggestInt val1, BiggestInt val2)
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest.h
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest.h
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
20095
20096
20097
20098
20099
20100
20101
20102
20103
20104
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
20105
20106
20107
20108
20109
20110
20111
20112
20113
20114
20115
20116
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
20117
20118
20119
20120
20121
20122
20123
20124
20125
20126
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest.h
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ }\ }\ GTEST_API_ AssertionResult CmpHelper##op_name(\ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+ show +
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest.h
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste // of similar code. // // For each templatized helper function, we also define an overloaded // version for BiggestInt in order to reduce code bloat and allow // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ show +
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
#define GTEST_IMPL_CMP_HELPER_(op_name, op) \ template <typename T1, typename T2> \ AssertionResult CmpHelper##op_name(const char *expr1, const char *expr2, \ const T1 &val1, const T2 &val2) { \ if (val1 op val2) { \ return AssertionSuccess(); \ } else { \ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op); \ } \ } \ GTEST_API_ AssertionResult CmpHelper##op_name( \ const char *expr1, const char *expr2, BiggestInt val1, BiggestInt val2)
+ show +
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE

[CVE-2020-0478_1.diff] gtest-printers.h #22
-GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); +GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream *os); -GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); -inline void PrintTo(char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const char*>(s), os); +GTEST_API_ void PrintTo(const char *s, ::std::ostream *os); +inline void PrintTo(char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const char *>(s), os); -inline void PrintTo(const signed char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(const signed char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os); -inline void PrintTo(signed char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(signed char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os); -inline void PrintTo(const unsigned char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(const unsigned char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os); -inline void PrintTo(unsigned char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(unsigned char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
497
498
499
500
501
502
503
504
505
506
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
528
529
530
531
532
533
534
535
536
537
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest-printers.h
531
532
533
534
535
536
537
538
539
540
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
562
563
564
565
566
567
568
569
570
571
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest-printers.h
546
547
548
549
550
551
552
553
554
555
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
577
578
579
580
581
582
583
584
585
586
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
395
396
397
398
399
400
401
402
403
404
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
426
427
428
429
430
431
432
433
434
435
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest-printers.h
532
533
534
535
536
537
538
539
540
541
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
563
564
565
566
567
568
569
570
571
572
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest-printers.h
529
530
531
532
533
534
535
536
537
538
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream *os); // Overloads for C strings. GTEST_API_ void PrintTo(const char *s, ::std::ostream *os); inline void PrintTo(char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const char *>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os); } inline void PrintTo(signed char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os); } inline void PrintTo(const unsigned char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os); } inline void PrintTo(unsigned char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os);
+ show +
560
561
562
563
564
565
566
567
568
569
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t *s, ::std::ostream *os);

[CVE-2020-0478_1.diff] gtest-printers.h #29
-GTEST_API_ void UniversalPrintArray( - const char* begin, size_t len, ::std::ostream* os); +GTEST_API_ void UniversalPrintArray(const char *begin, size_t len, + ::std::ostream *os); -GTEST_API_ void UniversalPrintArray( - const wchar_t* begin, size_t len, ::std::ostream* os); +GTEST_API_ void UniversalPrintArray(const wchar_t *begin, size_t len, + ::std::ostream *os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
729
730
731
732
733
734
735
736
737
738
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
739
740
741
742
743
744
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
745
746
747
748
749
750
751
752
753
754
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest-printers.h
740
741
742
743
744
745
746
747
748
749
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
750
751
752
753
754
755
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
756
757
758
759
760
761
762
763
764
765
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
10797
10798
10799
10800
10801
10802
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest-printers.h
831
832
833
834
835
836
837
838
839
840
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
841
842
843
844
845
846
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
847
848
849
850
851
852
853
854
855
856
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
9828
9829
9830
9831
9832
9833
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest-printers.h
741
742
743
744
745
746
747
748
749
750
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
751
752
753
754
755
756
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
757
758
759
760
761
762
763
764
765
766
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }

[CVE-2020-0470_1.diff] gtest-printers.h #22
-GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); +GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream *os); -GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); -inline void PrintTo(char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const char*>(s), os); +GTEST_API_ void PrintTo(const char *s, ::std::ostream *os); +inline void PrintTo(char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const char *>(s), os); -inline void PrintTo(const signed char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(const signed char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os); -inline void PrintTo(signed char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(signed char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os); -inline void PrintTo(const unsigned char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(const unsigned char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os); -inline void PrintTo(unsigned char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_<const void*>(s), os); +inline void PrintTo(unsigned char *s, ::std::ostream *os) { + PrintTo(ImplicitCast_<const void *>(s), os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest-printers.h
530
531
532
533
534
535
536
537
538
539
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
561
562
563
564
565
566
567
568
569
570
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
497
498
499
500
501
502
503
504
505
506
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
528
529
530
531
532
533
534
535
536
537
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest-printers.h
531
532
533
534
535
536
537
538
539
540
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
562
563
564
565
566
567
568
569
570
571
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest-printers.h
546
547
548
549
550
551
552
553
554
555
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
577
578
579
580
581
582
583
584
585
586
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
395
396
397
398
399
400
401
402
403
404
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
426
427
428
429
430
431
432
433
434
435
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest-printers.h
532
533
534
535
536
537
538
539
540
541
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); inline void PrintTo(char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(signed char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(const unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os);
+ show +
563
564
565
566
567
568
569
570
571
572
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
/media/esteban/ACOS/dotOS/external/libaom/libaom/third_party/googletest/src/googletest/include/gtest/gtest-printers.h
529
530
531
532
533
534
535
536
537
538
*os << (x ? "true" : "false"); } // Overload for wchar_t type. // Prints a wchar_t as a symbol if it is printable or as its internal // code otherwise and also as its decimal code (except for L'\0'). // The L'\0' char is printed as "L'\\0'". The decimal code is printed // as signed integer when wchar_t is implemented by the compiler // as a signed type and is printed as an unsigned integer when wchar_t // is implemented as an unsigned type.
+ show +
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream *os); // Overloads for C strings. GTEST_API_ void PrintTo(const char *s, ::std::ostream *os); inline void PrintTo(char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const char *>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. inline void PrintTo(const signed char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os); } inline void PrintTo(signed char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os); } inline void PrintTo(const unsigned char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os); } inline void PrintTo(unsigned char *s, ::std::ostream *os) { PrintTo(ImplicitCast_<const void *>(s), os);
+ show +
560
561
562
563
564
565
566
567
568
569
} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native // type. When wchar_t is a typedef, defining an overload for const // wchar_t* would cause unsigned short* be printed as a wide string, // possibly causing invalid memory accesses. #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t *s, ::std::ostream *os);

[CVE-2020-0470_1.diff] gtest-printers.h #29
-GTEST_API_ void UniversalPrintArray( - const char* begin, size_t len, ::std::ostream* os); +GTEST_API_ void UniversalPrintArray(const char *begin, size_t len, + ::std::ostream *os); -GTEST_API_ void UniversalPrintArray( - const wchar_t* begin, size_t len, ::std::ostream* os); +GTEST_API_ void UniversalPrintArray(const wchar_t *begin, size_t len, + ::std::ostream *os);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/googletest/googletest/include/gtest/gtest-printers.h
739
740
741
742
743
744
745
746
747
748
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
749
750
751
752
753
754
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
755
756
757
758
759
760
761
762
763
764
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
729
730
731
732
733
734
735
736
737
738
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
739
740
741
742
743
744
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
745
746
747
748
749
750
751
752
753
754
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/include/gtest/gtest-printers.h
740
741
742
743
744
745
746
747
748
749
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
750
751
752
753
754
755
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
756
757
758
759
760
761
762
763
764
765
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
10797
10798
10799
10800
10801
10802
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest-printers.h
831
832
833
834
835
836
837
838
839
840
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
841
842
843
844
845
846
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
847
848
849
850
851
852
853
854
855
856
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
9828
9829
9830
9831
9832
9833
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/include/gtest/gtest-printers.h
741
742
743
744
745
746
747
748
749
750
PrintRawArrayTo(begin, len, os); } else { PrintRawArrayTo(begin, kChunkSize, os); *os << ", ..., "; PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); } *os << " }"; } } // This overload prints a (const) char array compactly.
+ show +
751
752
753
754
755
756
GTEST_API_ void UniversalPrintArray( const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. GTEST_API_ void UniversalPrintArray( const wchar_t* begin, size_t len, ::std::ostream* os);
+ show +
757
758
759
760
761
762
763
764
765
766
// Implements printing an array type T[N]. template <typename T, size_t N> class UniversalPrinter<T[N]> { public: // Prints the given array, omitting some elements when there are too // many. static void Print(const T (&a)[N], ::std::ostream* os) { UniversalPrintArray(a, N, os); }

[CVE-2015-6607_1.diff] sqlite3.c #19
-SQLITE_API int sqlite3_initialize(void); -SQLITE_API int sqlite3_shutdown(void); -SQLITE_API int sqlite3_os_init(void); -SQLITE_API int sqlite3_os_end(void); +SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void); +SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2593
2594
2595
2596
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1545
1546
1547
1548
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **

[CVE-2015-6607_1.diff] sqlite3.c #43
+** ^(The "%w" formatting option is like "%q" except that it expects to +** be contained within double-quotes instead of single quotes, and it +** escapes the double-quote character instead of the single-quote +** character.)^ The "%w" formatting option is intended for safely inserting +** table and column names into a constructed SQL statement. +** -SQLITE_API char *sqlite3_mprintf(const char*,...); -SQLITE_API char *sqlite3_vmprintf(const char*, va_list); -SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); -SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char*,...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_snprintf(int,char*,const char*, ...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3854
3855
3856
3857
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2806
2807
2808
2809
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block

[CVE-2015-6607_1.diff] sqlite3.c #57
-SQLITE_API int sqlite3_errcode(sqlite3 *db); -SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); -SQLITE_API const char *sqlite3_errmsg(sqlite3*); -SQLITE_API const void *sqlite3_errmsg16(sqlite3*); -SQLITE_API const char *sqlite3_errstr(int); +SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db); +SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3*); +SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3*); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errstr(int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4814
4815
4816
4817
4818
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3766
3767
3768
3769
3770
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object

[CVE-2015-6607_1.diff] sqlite3.c #75
-SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_database_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_table_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_origin_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*,int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5625
5626
5627
5628
5629
5630
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4577
4578
4579
4580
4581
4582
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an

[CVE-2015-6607_1.diff] sqlite3.c #139
-SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); -SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); -SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*); +SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_mutex_alloc(int); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex*); +SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex*);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8501
8502
8503
8504
8505
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7453
7454
7455
7456
7457
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite

[CVE-2015-6607_1.diff] sqlite3.h #15
-SQLITE_API int sqlite3_initialize(void); -SQLITE_API int sqlite3_shutdown(void); -SQLITE_API int sqlite3_os_init(void); -SQLITE_API int sqlite3_os_end(void); +SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void); +SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2593
2594
2595
2596
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1545
1546
1547
1548
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **

[CVE-2015-6607_1.diff] sqlite3.h #39
+** ^(The "%w" formatting option is like "%q" except that it expects to +** be contained within double-quotes instead of single quotes, and it +** escapes the double-quote character instead of the single-quote +** character.)^ The "%w" formatting option is intended for safely inserting +** table and column names into a constructed SQL statement. +** -SQLITE_API char *sqlite3_mprintf(const char*,...); -SQLITE_API char *sqlite3_vmprintf(const char*, va_list); -SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); -SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char*,...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_snprintf(int,char*,const char*, ...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3854
3855
3856
3857
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2806
2807
2808
2809
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block

[CVE-2015-6607_1.diff] sqlite3.h #53
-SQLITE_API int sqlite3_errcode(sqlite3 *db); -SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); -SQLITE_API const char *sqlite3_errmsg(sqlite3*); -SQLITE_API const void *sqlite3_errmsg16(sqlite3*); -SQLITE_API const char *sqlite3_errstr(int); +SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db); +SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3*); +SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3*); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errstr(int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4814
4815
4816
4817
4818
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3766
3767
3768
3769
3770
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object

[CVE-2015-6607_1.diff] sqlite3.h #71
-SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_database_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_table_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_origin_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*,int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5625
5626
5627
5628
5629
5630
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4577
4578
4579
4580
4581
4582
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an

[CVE-2015-6607_1.diff] sqlite3.h #135
-SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); -SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); -SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*); +SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_mutex_alloc(int); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex*); +SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex*);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8501
8502
8503
8504
8505
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7453
7454
7455
7456
7457
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite

[CVE-2015-6607_1.diff] sqlite3.c #19
-SQLITE_API int sqlite3_initialize(void); -SQLITE_API int sqlite3_shutdown(void); -SQLITE_API int sqlite3_os_init(void); -SQLITE_API int sqlite3_os_end(void); +SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void); +SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2593
2594
2595
2596
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1545
1546
1547
1548
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **

[CVE-2015-6607_1.diff] sqlite3.c #43
+** ^(The "%w" formatting option is like "%q" except that it expects to +** be contained within double-quotes instead of single quotes, and it +** escapes the double-quote character instead of the single-quote +** character.)^ The "%w" formatting option is intended for safely inserting +** table and column names into a constructed SQL statement. +** -SQLITE_API char *sqlite3_mprintf(const char*,...); -SQLITE_API char *sqlite3_vmprintf(const char*, va_list); -SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); -SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char*,...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_snprintf(int,char*,const char*, ...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3854
3855
3856
3857
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2806
2807
2808
2809
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block

[CVE-2015-6607_1.diff] sqlite3.c #57
-SQLITE_API int sqlite3_errcode(sqlite3 *db); -SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); -SQLITE_API const char *sqlite3_errmsg(sqlite3*); -SQLITE_API const void *sqlite3_errmsg16(sqlite3*); -SQLITE_API const char *sqlite3_errstr(int); +SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db); +SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3*); +SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3*); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errstr(int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4814
4815
4816
4817
4818
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3766
3767
3768
3769
3770
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object

[CVE-2015-6607_1.diff] sqlite3.c #75
-SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_database_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_table_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_origin_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*,int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5625
5626
5627
5628
5629
5630
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4577
4578
4579
4580
4581
4582
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an

[CVE-2015-6607_1.diff] sqlite3.c #139
-SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); -SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); -SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*); +SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_mutex_alloc(int); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex*); +SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex*);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8501
8502
8503
8504
8505
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7453
7454
7455
7456
7457
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite

[CVE-2015-6607_1.diff] sqlite3.h #15
-SQLITE_API int sqlite3_initialize(void); -SQLITE_API int sqlite3_shutdown(void); -SQLITE_API int sqlite3_os_init(void); -SQLITE_API int sqlite3_os_end(void); +SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void); +SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void); +SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1517
1518
1519
1520
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2593
2594
2595
2596
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1545
1546
1547
1548
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
2581
2582
2583
2584
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */
+ show +
1542
1543
1544
1545
SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void);
+ show +
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
/* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. **

[CVE-2015-6607_1.diff] sqlite3.h #39
+** ^(The "%w" formatting option is like "%q" except that it expects to +** be contained within double-quotes instead of single quotes, and it +** escapes the double-quote character instead of the single-quote +** character.)^ The "%w" formatting option is intended for safely inserting +** table and column names into a constructed SQL statement. +** -SQLITE_API char *sqlite3_mprintf(const char*,...); -SQLITE_API char *sqlite3_vmprintf(const char*, va_list); -SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); -SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char*,...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char*, va_list); +SQLITE_API char *SQLITE_CDECL sqlite3_snprintf(int,char*,const char*, ...); +SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2689
2690
2691
2692
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3854
3855
3856
3857
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2806
2807
2808
2809
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
3843
3844
3845
3846
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf(). ** ** See also: [built-in printf()], [printf() SQL function] */
+ show +
2804
2805
2806
2807
SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
+ show +
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
/* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific [VFS] implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block

[CVE-2015-6607_1.diff] sqlite3.h #53
-SQLITE_API int sqlite3_errcode(sqlite3 *db); -SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); -SQLITE_API const char *sqlite3_errmsg(sqlite3*); -SQLITE_API const void *sqlite3_errmsg16(sqlite3*); -SQLITE_API const char *sqlite3_errstr(int); +SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db); +SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3*); +SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3*); +SQLITE_API const char *SQLITE_STDCALL sqlite3_errstr(int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3507
3508
3509
3510
3511
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4814
4815
4816
4817
4818
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3766
3767
3768
3769
3770
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
4803
4804
4805
4806
4807
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */
+ show +
3764
3765
3766
3767
3768
SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); SQLITE_API const char *sqlite3_errstr(int);
+ show +
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
/* ** CAPI3REF: Prepared Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement that ** has been compiled into binary form and is ready to be evaluated. ** ** Think of each SQL statement as a separate computer program. The ** original SQL text is source code. A prepared statement object

[CVE-2015-6607_1.diff] sqlite3.h #71
-SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); -SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); -SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_database_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_table_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt*,int); +SQLITE_API const char *SQLITE_STDCALL sqlite3_column_origin_name(sqlite3_stmt*,int); +SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*,int);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4304
4305
4306
4307
4308
4309
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5625
5626
5627
5628
5629
5630
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4577
4578
4579
4580
4581
4582
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
5614
5615
5616
5617
5618
5619
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */
+ show +
4575
4576
4577
4578
4579
4580
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
+ show +
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
/* ** CAPI3REF: Declared Datatype Of A Query Result ** METHOD: sqlite3_stmt ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an

[CVE-2015-6607_1.diff] sqlite3.h #135
-SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); -SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); -SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); -SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*); +SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_mutex_alloc(int); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex*); +SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex*); +SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex*);
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/x86/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v30/arm64/include/external/sqlite/dist/orig/sqlite3.h
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7068
7069
7070
7071
7072
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8501
8502
8503
8504
8505
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.h
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7453
7454
7455
7456
7457
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
8490
8491
8492
8493
8494
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.h
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
** previously entered by the same thread. The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */
+ show +
7451
7452
7453
7454
7455
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
+ show +
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
/* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the application has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite

[CVE-2022-20357_1.diff] SurfaceControl.h #1
+ mFormat = other->mFormat; - int32_t mLayerId; - uint32_t mTransformHint; - uint32_t mWidth; - uint32_t mHeight; - PixelFormat mFormat; - uint32_t mCreateFlags; + int32_t mLayerId = 0; + uint32_t mTransformHint = 0; + uint32_t mWidth = 0; + uint32_t mHeight = 0; + PixelFormat mFormat = PIXEL_FORMAT_NONE; + uint32_t mCreateFlags = 0;
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86_64/include/frameworks/native/libs/gui/include/gui/SurfaceControl.h
111
112
113
114
115
116
117
118
119
120
sp<Surface> generateSurfaceLocked(); status_t validate() const; sp<SurfaceComposerClient> mClient; sp<IBinder> mHandle; sp<IGraphicBufferProducer> mGraphicBufferProducer; mutable Mutex mLock; mutable sp<Surface> mSurfaceData; mutable sp<BLASTBufferQueue> mBbq; mutable sp<SurfaceControl> mBbqChild;
+ show +
121
122
123
124
125
126
int32_t mLayerId; uint32_t mTransformHint; uint32_t mWidth; uint32_t mHeight; PixelFormat mFormat; uint32_t mCreateFlags;
+ show +
127
128
129
130
131
}; }; // namespace android #endif // ANDROID_GUI_SURFACE_CONTROL_H
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm/include/frameworks/native/libs/gui/include/gui/SurfaceControl.h
111
112
113
114
115
116
117
118
119
120
sp<Surface> generateSurfaceLocked(); status_t validate() const; sp<SurfaceComposerClient> mClient; sp<IBinder> mHandle; sp<IGraphicBufferProducer> mGraphicBufferProducer; mutable Mutex mLock; mutable sp<Surface> mSurfaceData; mutable sp<BLASTBufferQueue> mBbq; mutable sp<SurfaceControl> mBbqChild;
+ show +
121
122
123
124
125
126
int32_t mLayerId; uint32_t mTransformHint; uint32_t mWidth; uint32_t mHeight; PixelFormat mFormat; uint32_t mCreateFlags;
+ show +
127
128
129
130
131
}; }; // namespace android #endif // ANDROID_GUI_SURFACE_CONTROL_H
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/x86/include/frameworks/native/libs/gui/include/gui/SurfaceControl.h
111
112
113
114
115
116
117
118
119
120
sp<Surface> generateSurfaceLocked(); status_t validate() const; sp<SurfaceComposerClient> mClient; sp<IBinder> mHandle; sp<IGraphicBufferProducer> mGraphicBufferProducer; mutable Mutex mLock; mutable sp<Surface> mSurfaceData; mutable sp<BLASTBufferQueue> mBbq; mutable sp<SurfaceControl> mBbqChild;
+ show +
121
122
123
124
125
126
int32_t mLayerId; uint32_t mTransformHint; uint32_t mWidth; uint32_t mHeight; PixelFormat mFormat; uint32_t mCreateFlags;
+ show +
127
128
129
130
131
}; }; // namespace android #endif // ANDROID_GUI_SURFACE_CONTROL_H
/media/esteban/ACOS/dotOS/prebuilts/vndk/v31/arm64/include/frameworks/native/libs/gui/include/gui/SurfaceControl.h
111
112
113
114
115
116
117
118
119
120
sp<Surface> generateSurfaceLocked(); status_t validate() const; sp<SurfaceComposerClient> mClient; sp<IBinder> mHandle; sp<IGraphicBufferProducer> mGraphicBufferProducer; mutable Mutex mLock; mutable sp<Surface> mSurfaceData; mutable sp<BLASTBufferQueue> mBbq; mutable sp<SurfaceControl> mBbqChild;
+ show +
121
122
123
124
125
126
int32_t mLayerId; uint32_t mTransformHint; uint32_t mWidth; uint32_t mHeight; PixelFormat mFormat; uint32_t mCreateFlags;
+ show +
127
128
129
130
131
}; }; // namespace android #endif // ANDROID_GUI_SURFACE_CONTROL_H
/media/esteban/ACOS/dotOS/frameworks/native/libs/gui/include/gui/SurfaceControl.h
111
112
113
114
115
116
117
118
119
120
sp<Surface> generateSurfaceLocked(); status_t validate() const; sp<SurfaceComposerClient> mClient; sp<IBinder> mHandle; sp<IGraphicBufferProducer> mGraphicBufferProducer; mutable Mutex mLock; mutable sp<Surface> mSurfaceData; mutable sp<BLASTBufferQueue> mBbq; mutable sp<SurfaceControl> mBbqChild;
+ show +
121
122
123
124
125
126
int32_t mLayerId; uint32_t mTransformHint; uint32_t mWidth; uint32_t mHeight; PixelFormat mFormat; uint32_t mCreateFlags;
+ show +
127
128
129
130
131
}; }; // namespace android #endif // ANDROID_GUI_SURFACE_CONTROL_H

[CVE-2023-40093_1.diff] BUILD.gn #2
+ cflags_cc = [] - defines = [ - "PNG_PREFIX", - "PNG_USE_READ_MACROS", - ] + defines = []
/media/esteban/ACOS/dotOS/external/pdfium/BUILD.gn
11
12
13
14
15
16
17
18
19
20
public_deps += [ "third_party:fx_freetype" ] } else { public_deps += [ "//build/config/freetype" ] } } config("pdfium_common_config") { cflags = [] ldflags = [] include_dirs = [ "." ]
+ show +
21
22
23
24
defines = [ "PNG_PREFIX", "PNG_USE_READ_MACROS", ]
+ show +
25
26
27
28
29
30
31
32
33
34
if (!use_system_libopenjpeg2) { defines += [ "OPJ_STATIC" ] } if (pdf_enable_click_logging) { defines += [ "PDF_ENABLE_CLICK_LOGGING" ] } if (pdf_use_skia) {
/media/esteban/ACOS/dotOS/external/pdfium/samples/BUILD.gn
6
7
8
9
10
11
12
13
14
15
import("../pdfium.gni") group("samples") { testonly = true deps = [ ":pdfium_test" ] } config("pdfium_samples_config") { cflags = [] ldflags = []
+ show +
16
17
18
19
defines = [ "PNG_PREFIX", "PNG_USE_READ_MACROS", ]
+ show +
20
21
22
23
24
25
26
27
28
29
include_dirs = [ ".." ] if (pdf_use_skia) { defines += [ "PDF_ENABLE_SKIA" ] } else if (pdf_use_skia_paths) { defines += [ "PDF_ENABLE_SKIA_PATHS" ] } if (is_asan) { defines += [ "PDF_ENABLE_ASAN" ] }
/media/esteban/ACOS/dotOS/external/pdfium/testing/fuzzers/BUILD.gn
1
2
3
4
5
6
7
8
9
# Copyright 2016 The PDFium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("../../pdfium.gni") config("fuzzer_config") { configs = [ "../..:pdfium_core_config" ]
+ show +
10
11
12
13
defines = [ "PNG_PREFIX", "PNG_USE_READ_MACROS", ]
+ show +
14
15
16
17
18
19
20
21
22
23
include_dirs = [ "../.." ] } # All possible "pdfium_fuzzer"s. fuzzer_list = [ "pdf_cmap_fuzzer", "pdf_codec_a85_fuzzer", "pdf_codec_fax_fuzzer", "pdf_codec_icc_fuzzer", "pdf_codec_jbig2_fuzzer",

[CVE-2021-39707_1.diff] AppRestrictionsFragment.java #4
- // Activity can be started if intent resolves to multiple activities - List<ResolveInfo> resolveInfos = AppRestrictionsFragment.this.mPackageManager - .queryIntentActivities(intent, 0 /* no flags */); - if (resolveInfos.size() != 1) { - return; + ResolveInfo resolveInfo = mPackageManager.resolveActivity( + intent, PackageManager.MATCH_DEFAULT_ONLY); + + if (resolveInfo == null) { + throw new ActivityNotFoundException("No result for resolving " + intent); - ActivityInfo activityInfo = resolveInfos.get(0).activityInfo; + ActivityInfo activityInfo = resolveInfo.activityInfo; + " is not allowed to start activity " + intent);
/media/esteban/ACOS/dotOS/packages/apps/TvSettings/Settings/src/com/android/tv/settings/users/AppRestrictionsFragment.java
552
553
554
555
556
557
558
559
560
561
} } } private void assertSafeToStartCustomActivity(Intent intent, String packageName) { // Activity can be started if it belongs to the same app if (intent.getPackage() != null && intent.getPackage().equals(packageName)) { return; } // Activity can be started if intent resolves to multiple activities
+ show +
562
563
564
565
566
567
568
List<ResolveInfo> resolveInfos = AppRestrictionsFragment.this.mPackageManager .queryIntentActivities(intent, 0 /* no flags */); if (resolveInfos.size() != 1) { return; } // Prevent potential privilege escalation ActivityInfo activityInfo = resolveInfos.get(0).activityInfo;
+ show +
569
570
571
572
573
574
575
576
577
578
if (!packageName.equals(activityInfo.packageName)) { throw new SecurityException("Application " + packageName + " is not allowed to start activity " + intent); } } @Override public boolean onPreferenceTreeClick(Preference preference) { if (preference instanceof AppRestrictionsPreference) { AppRestrictionsPreference pref = (AppRestrictionsPreference) preference;

[CVE-2023-21141_1.diff] Receiver.java #3
+import android.os.UserManager; + } else if (Intent.ACTION_USER_FOREGROUND.equals(intent.getAction())) { + boolean developerOptionsEnabled = (1 == + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED , 0)); + boolean isAdminUser = context.getSystemService(UserManager.class).isAdminUser(); + updateStorageProvider(context, developerOptionsEnabled && isAdminUser); - - ComponentName name = new ComponentName(context, - StorageProvider.class); - context.getPackageManager().setComponentEnabledSetting(name, - developerOptionsEnabled - ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); + boolean isAdminUser = context.getSystemService(UserManager.class) + .isAdminUser(); + updateStorageProvider(context, developerOptionsEnabled && isAdminUser);
/media/esteban/ACOS/dotOS/packages/apps/Traceur/src/com/android/traceur/Receiver.java
207
208
209
210
211
212
213
214
215
216
mDeveloperOptionsObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); boolean developerOptionsEnabled = (1 == Settings.Global.getInt(context.getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED , 0));
+ show +
217
218
219
220
221
222
223
ComponentName name = new ComponentName(context, StorageProvider.class); context.getPackageManager().setComponentEnabledSetting(name, developerOptionsEnabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
+ show +
224
225
226
227
228
229
230
231
232
233
if (!developerOptionsEnabled) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putBoolean( context.getString(R.string.pref_key_quick_setting), false) .commit(); updateQuickSettings(context); // Stop an ongoing trace if one exists. if (TraceUtils.isTracingOn()) {

[CVE-2023-21142_1.diff] Receiver.java #3
+import android.os.UserManager; + } else if (Intent.ACTION_USER_FOREGROUND.equals(intent.getAction())) { + boolean developerOptionsEnabled = (1 == + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED , 0)); + boolean isAdminUser = context.getSystemService(UserManager.class).isAdminUser(); + updateStorageProvider(context, developerOptionsEnabled && isAdminUser); - - ComponentName name = new ComponentName(context, - StorageProvider.class); - context.getPackageManager().setComponentEnabledSetting(name, - developerOptionsEnabled - ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); + boolean isAdminUser = context.getSystemService(UserManager.class) + .isAdminUser(); + updateStorageProvider(context, developerOptionsEnabled && isAdminUser);
/media/esteban/ACOS/dotOS/packages/apps/Traceur/src/com/android/traceur/Receiver.java
207
208
209
210
211
212
213
214
215
216
mDeveloperOptionsObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); boolean developerOptionsEnabled = (1 == Settings.Global.getInt(context.getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED , 0));
+ show +
217
218
219
220
221
222
223
ComponentName name = new ComponentName(context, StorageProvider.class); context.getPackageManager().setComponentEnabledSetting(name, developerOptionsEnabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
+ show +
224
225
226
227
228
229
230
231
232
233
if (!developerOptionsEnabled) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putBoolean( context.getString(R.string.pref_key_quick_setting), false) .commit(); updateQuickSettings(context); // Stop an ongoing trace if one exists. if (TraceUtils.isTracingOn()) {

[CVE-2024-43087_1.diff] AccessibilitySettings.java #3
- private boolean containsTargetNameInList(List<AccessibilityShortcutInfo> shortcutInfos, - AccessibilityServiceInfo targetServiceInfo) { - final ServiceInfo serviceInfo = targetServiceInfo.getResolveInfo().serviceInfo; - final String servicePackageName = serviceInfo.packageName; - final CharSequence serviceLabel = serviceInfo.loadLabel(getPackageManager()); - - for (int i = 0, count = shortcutInfos.size(); i < count; ++i) { - final ActivityInfo activityInfo = shortcutInfos.get(i).getActivityInfo(); - final String activityPackageName = activityInfo.packageName; - final CharSequence activityLabel = activityInfo.loadLabel(getPackageManager()); - if (servicePackageName.equals(activityPackageName) - && serviceLabel.equals(activityLabel)) { - return true; - } - } - return false; - } -
/media/esteban/ACOS/dotOS/packages/apps/Settings/src/com/android/settings/accessibility/AccessibilitySettings.java
421
422
423
424
425
426
427
428
429
430
final List<RestrictedPreference> serviceList = preferenceHelper.createAccessibilityServicePreferenceList(installedServiceList); final List<RestrictedPreference> preferenceList = new ArrayList<>(); preferenceList.addAll(activityList); preferenceList.addAll(serviceList); return preferenceList; }
+ show +
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
private boolean containsTargetNameInList(List<AccessibilityShortcutInfo> shortcutInfos, AccessibilityServiceInfo targetServiceInfo) { final ServiceInfo serviceInfo = targetServiceInfo.getResolveInfo().serviceInfo; final String servicePackageName = serviceInfo.packageName; final CharSequence serviceLabel = serviceInfo.loadLabel(getPackageManager()); for (int i = 0, count = shortcutInfos.size(); i < count; ++i) { final ActivityInfo activityInfo = shortcutInfos.get(i).getActivityInfo(); final String activityPackageName = activityInfo.packageName; final CharSequence activityLabel = activityInfo.loadLabel(getPackageManager()); if (servicePackageName.equals(activityPackageName) && serviceLabel.equals(activityLabel)) { return true; } } return false;
+ show +
447
448
449
450
451
452
453
454
455
456
} private void initializePreBundledServicesMapFromArray(String categoryKey, int key) { String[] services = getResources().getStringArray(key); PreferenceCategory category = mCategoryToPrefCategoryMap.get(categoryKey); for (int i = 0; i < services.length; i++) { ComponentName component = ComponentName.unflattenFromString(services[i]); mPreBundledServiceComponentToCategoryMap.put(component, category); } }

[CVE-2024-49742_1.diff] NotificationAccessConfirmationActivity.java #4
+import java.util.List; + + // Check NLS service info. + String requiredPermission = Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE; + Intent NLSIntent = new Intent(NotificationListenerService.SERVICE_INTERFACE); + List<ResolveInfo> matchedServiceList = getPackageManager().queryIntentServicesAsUser( + NLSIntent, /* flags */ 0, mUserId); + boolean hasNLSIntentFilter = false; + for (ResolveInfo service : matchedServiceList) { + if (service.serviceInfo.packageName.equals(mComponentName.getPackageName())) { + if (!requiredPermission.equals(service.serviceInfo.permission)) { + Slog.e(LOG_TAG, "Service " + mComponentName + " lacks permission " + + requiredPermission); + finish(); + return; + } + hasNLSIntentFilter = true; + break; + } + } + if (!hasNLSIntentFilter) { + Slog.e(LOG_TAG, "Service " + mComponentName + " lacks an intent-filter action " + + "for android.service.notification.NotificationListenerService."); + finish(); + return; + } + - String requiredPermission = Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE; - try { - ServiceInfo serviceInfo = getPackageManager().getServiceInfo(mComponentName, 0); - if (!requiredPermission.equals(serviceInfo.permission)) { - Slog.e(LOG_TAG, - "Service " + mComponentName + " lacks permission " + requiredPermission); - return; - } - } catch (PackageManager.NameNotFoundException e) { - Slog.e(LOG_TAG, "Failed to get service info for " + mComponentName, e); - return; - } -
/media/esteban/ACOS/dotOS/packages/apps/Settings/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java
92
93
94
95
96
97
98
99
100
101
} @Override public void onPause() { getWindow().clearFlags( WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); super.onPause(); } private void onAllow() {
+ show +
102
103
104
105
106
107
108
109
110
111
112
String requiredPermission = Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE; try { ServiceInfo serviceInfo = getPackageManager().getServiceInfo(mComponentName, 0); if (!requiredPermission.equals(serviceInfo.permission)) { Slog.e(LOG_TAG, "Service " + mComponentName + " lacks permission " + requiredPermission); return; } } catch (PackageManager.NameNotFoundException e) { Slog.e(LOG_TAG, "Failed to get service info for " + mComponentName, e); return;
+ show +
113
114
115
116
117
118
119
120
121
122
} mNm.setNotificationListenerAccessGranted(mComponentName, true); finish(); } @Override public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { return AlertActivity.dispatchPopulateAccessibilityEvent(this, event);

[CVE-2021-1012_1.diff] NotificationAccessDetails.java #2
- protected void setIntentAndFinish(boolean appChanged) { - Log.i(TAG, "appChanged=" + appChanged); - Intent intent = new Intent(); - intent.putExtra(ManageApplications.APP_CHG, appChanged); - SettingsActivity sa = (SettingsActivity) getActivity(); - sa.finishPreferencePanel(Activity.RESULT_OK, intent); - } -
/media/esteban/ACOS/dotOS/packages/apps/Settings/src/com/android/settings/applications/AppInfoBase.java
151
152
153
154
155
156
157
158
159
160
Log.e(TAG, "Exception when retrieving package:" + mAppEntry.info.packageName, e); } } else { Log.w(TAG, "Missing AppEntry; maybe reinstalling?"); mPackageInfo = null; } return mPackageName; }
+ show +
161
162
163
164
165
166
protected void setIntentAndFinish(boolean appChanged) { Log.i(TAG, "appChanged=" + appChanged); Intent intent = new Intent(); intent.putExtra(ManageApplications.APP_CHG, appChanged); SettingsActivity sa = (SettingsActivity) getActivity(); sa.finishPreferencePanel(Activity.RESULT_OK, intent);
+ show +
167
168
169
170
171
172
173
174
175
176
mFinishing = true; } protected void showDialogInner(int id, int moveErrorCode) { DialogFragment newFragment = MyAlertDialogFragment.newInstance(id, moveErrorCode); newFragment.setTargetFragment(this, 0); newFragment.show(getFragmentManager(), "dialog " + id); } protected abstract boolean refreshUi();

[CVE-2023-35677_1.diff] DeviceAdminAdd.java #8
- restrictedAction.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - if (!mActionButton.isEnabled()) { - showPolicyTransparencyDialogIfRequired(); - return; - } - if (mAdding) { - addAndFinish(); - } else if (isManagedProfile(mDeviceAdmin) - && mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) { - final int userId = UserHandle.myUserId(); - UserDialogs.createRemoveDialog(DeviceAdminAdd.this, userId, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - UserManager um = UserManager.get(DeviceAdminAdd.this); - um.removeUser(userId); - finish(); - } - } - ).show(); - } else if (mUninstalling) { - mDPM.uninstallPackageWithActiveAdmins(mDeviceAdmin.getPackageName()); - finish(); - } else if (!mWaitingForRemoveMsg) { - try { - // Don't allow the admin to put a dialog up in front - // of us while we interact with the user. - ActivityManager.getService().stopAppSwitches(); - } catch (RemoteException e) { - } - mWaitingForRemoveMsg = true; - mDPM.getRemoveWarning(mDeviceAdmin.getComponent(), - new RemoteCallback(new RemoteCallback.OnResultListener() { - @Override - public void onResult(Bundle result) { - CharSequence msg = result != null - ? result.getCharSequence( - DeviceAdminReceiver.EXTRA_DISABLE_WARNING) - : null; - continueRemoveAction(msg); - } - }, mHandler)); - // Don't want to wait too long. - getWindow().getDecorView().getHandler().postDelayed(new Runnable() { - @Override public void run() { - continueRemoveAction(null); - } - }, 2*1000); - } + + final View.OnClickListener restrictedActionClickListener = v -> { + if (!mActionButton.isEnabled()) { + showPolicyTransparencyDialogIfRequired(); + return; + if (mAdding) { + addAndFinish(); + } else if (isManagedProfile(mDeviceAdmin) + && mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) { + final int userId = UserHandle.myUserId(); + UserDialogs.createRemoveDialog(DeviceAdminAdd.this, userId, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + UserManager um = UserManager.get(DeviceAdminAdd.this); + um.removeUser(userId); + finish(); + } + } + ).show(); + } else if (mUninstalling) { + mDPM.uninstallPackageWithActiveAdmins(mDeviceAdmin.getPackageName()); + finish(); + } else if (!mWaitingForRemoveMsg) { + try { + // Don't allow the admin to put a dialog up in front + // of us while we interact with the user. + ActivityManager.getService().stopAppSwitches(); + } catch (RemoteException e) { + } + mWaitingForRemoveMsg = true; + mDPM.getRemoveWarning(mDeviceAdmin.getComponent(), + new RemoteCallback(new RemoteCallback.OnResultListener() { + @Override + public void onResult(Bundle result) { + CharSequence msg = result != null + ? result.getCharSequence( + DeviceAdminReceiver.EXTRA_DISABLE_WARNING) + : null; + continueRemoveAction(msg); + } + }, mHandler)); + // Don't want to wait too long. + getWindow().getDecorView().getHandler().postDelayed( + () -> continueRemoveAction(null), 2 * 1000); + } + }; + restrictedAction.setOnKeyListener((view, keyCode, keyEvent) -> { + if ((keyEvent.getFlags() & KeyEvent.FLAG_FROM_SYSTEM) == 0) { + Log.e(TAG, "Can not activate device-admin with KeyEvent from non-system app."); + // Consume event to suppress click. + return true; + } + // Fallback to view click handler. + return false; + restrictedAction.setOnClickListener(restrictedActionClickListener);
/media/esteban/ACOS/dotOS/packages/apps/Settings/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
402
403
404
405
406
407
408
409
410
411
mDeviceAdmin.getActivityInfo().applicationInfo.uid); mDPM.uninstallPackageWithActiveAdmins(mDeviceAdmin.getPackageName()); finish(); } }); mActionButton = (Button) findViewById(R.id.action_button); final View restrictedAction = findViewById(R.id.restricted_action); restrictedAction.setFilterTouchesWhenObscured(true);
+ show +
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
restrictedAction.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (!mActionButton.isEnabled()) { showPolicyTransparencyDialogIfRequired(); return; } if (mAdding) { addAndFinish(); } else if (isManagedProfile(mDeviceAdmin) && mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) { final int userId = UserHandle.myUserId(); UserDialogs.createRemoveDialog(DeviceAdminAdd.this, userId, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { UserManager um = UserManager.get(DeviceAdminAdd.this); um.removeUser(userId); finish(); } } ).show(); } else if (mUninstalling) { mDPM.uninstallPackageWithActiveAdmins(mDeviceAdmin.getPackageName()); finish(); } else if (!mWaitingForRemoveMsg) { try { // Don't allow the admin to put a dialog up in front // of us while we interact with the user. ActivityManager.getService().stopAppSwitches(); } catch (RemoteException e) { } mWaitingForRemoveMsg = true; mDPM.getRemoveWarning(mDeviceAdmin.getComponent(), new RemoteCallback(new RemoteCallback.OnResultListener() { @Override public void onResult(Bundle result) { CharSequence msg = result != null ? result.getCharSequence( DeviceAdminReceiver.EXTRA_DISABLE_WARNING) : null; continueRemoveAction(msg); } }, mHandler)); // Don't want to wait too long. getWindow().getDecorView().getHandler().postDelayed(new Runnable() { @Override public void run() { continueRemoveAction(null); } }, 2*1000);
+ show +
461
462
463
464
465
466
467
468
469
470
} } }); } /** * Shows a dialog to explain why the button is disabled if required. */ private void showPolicyTransparencyDialogIfRequired() { if (isManagedProfile(mDeviceAdmin)

[CVE-2023-40127_1.diff] ModernMediaScannerTest.java #1
- @Test - public void testScanFileAndUpdateOwnerPackageName() throws Exception { - final File image = new File(mDir, "image.jpg"); - final String thisPackageName = InstrumentationRegistry.getContext().getPackageName(); - stage(R.raw.test_image, image); - - assertQueryCount(0, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - // scanning the image file inserts new database entry with OWNER_PACKAGE_NAME as - // thisPackageName. - assertNotNull(mModern.scanFile(image, REASON_UNKNOWN, thisPackageName)); - try (Cursor cursor = mIsolatedResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, - new String[] {MediaColumns.OWNER_PACKAGE_NAME}, null, null, null)) { - assertEquals(1, cursor.getCount()); - cursor.moveToNext(); - assertEquals(thisPackageName, cursor.getString(0)); - } - } -
/media/esteban/ACOS/dotOS/packages/providers/MediaProvider/tests/src/com/android/providers/media/scan/ModernMediaScannerTest.java
729
730
731
732
733
734
735
736
737
738
@Test public void testScan_missingFile() throws Exception { File image = new File(mDir, "image.jpg"); assertThat(mModern.scanFile(image, REASON_UNKNOWN)).isNull(); image = new File(Environment.getStorageDirectory(), "image.jpg"); assertThat(mModern.scanFile(image, REASON_UNKNOWN)).isNull(); }
+ show +
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
@Test public void testScanFileAndUpdateOwnerPackageName() throws Exception { final File image = new File(mDir, "image.jpg"); final String thisPackageName = InstrumentationRegistry.getContext().getPackageName(); stage(R.raw.test_image, image); assertQueryCount(0, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // scanning the image file inserts new database entry with OWNER_PACKAGE_NAME as // thisPackageName. assertNotNull(mModern.scanFile(image, REASON_UNKNOWN, thisPackageName)); try (Cursor cursor = mIsolatedResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] {MediaColumns.OWNER_PACKAGE_NAME}, null, null, null)) { assertEquals(1, cursor.getCount()); cursor.moveToNext(); assertEquals(thisPackageName, cursor.getString(0));
+ show +
754
755
756
757
758
759
760
761
762
763
} } /** * Verify fix for obscure bug which would cause us to delete files outside a * directory that share a common prefix. */ @Test public void testScan_Prefix() throws Exception { final File dir = new File(mDir, "test");

[CVE-2023-40127_1.diff] LegacyMediaScannerTest.java #1
- scanner.scanFile(new File("/dev/null"), MediaScanner.REASON_UNKNOWN, - InstrumentationRegistry.getContext().getPackageName()); - fail(); - } catch (UnsupportedOperationException expected) { - } - try {
/media/esteban/ACOS/dotOS/packages/providers/MediaProvider/tests/src/com/android/providers/media/scan/LegacyMediaScannerTest.java
41
42
43
44
45
46
47
48
49
50
scanner.scanDirectory(new File("/dev/null"), MediaScanner.REASON_UNKNOWN); fail(); } catch (UnsupportedOperationException expected) { } try { scanner.scanFile(new File("/dev/null"), MediaScanner.REASON_UNKNOWN); fail(); } catch (UnsupportedOperationException expected) { } try {
+ show +
51
52
53
54
55
56
scanner.scanFile(new File("/dev/null"), MediaScanner.REASON_UNKNOWN, InstrumentationRegistry.getContext().getPackageName()); fail(); } catch (UnsupportedOperationException expected) { } try {
+ show +
57
58
59
60
61
62
63
64
65
66
scanner.onDetachVolume(null); fail(); } catch (UnsupportedOperationException expected) { } } /** * This implementation was copied verbatim from the legacy * {@code frameworks/base/media/java/android/media/MediaScanner.java}. */

[CVE-2023-40127_1.diff] NullMediaScanner.java #1
- public Uri scanFile(File file, int reason, @Nullable String ownerPackage) { - Log.w(TAG, "Ignoring scan request for " + file); - return null; - } - - @Override
/media/esteban/ACOS/dotOS/packages/providers/MediaProvider/src/com/android/providers/media/scan/NullMediaScanner.java
50
51
52
53
54
55
56
57
58
59
Log.w(TAG, "Ignoring scan request for " + file); } @Override public Uri scanFile(File file, int reason) { Log.w(TAG, "Ignoring scan request for " + file); return null; } @Override
+ show +
60
61
62
63
64
65
public Uri scanFile(File file, int reason, @Nullable String ownerPackage) { Log.w(TAG, "Ignoring scan request for " + file); return null; } @Override
+ show +
66
67
68
69
70
71
72
73
74
75
public void onDetachVolume(MediaVolume volume) { // Ignored } @Override public void onIdleScanStopped() { // Ignored } @Override

[CVE-2023-40113_1.diff] MmsSmsDatabaseHelper.java #1
+ public static String CREATE_ADDR_TABLE_STR = + "CREATE TABLE " + MmsProvider.TABLE_ADDR + " (" + + Addr._ID + " INTEGER PRIMARY KEY," + + Addr.MSG_ID + " INTEGER," + + Addr.CONTACT_ID + " INTEGER," + + Addr.ADDRESS + " TEXT," + + Addr.TYPE + " INTEGER," + + Addr.CHARSET + " INTEGER);"; + + @VisibleForTesting + public static String CREATE_PART_TABLE_STR = + "CREATE TABLE " + MmsProvider.TABLE_PART + " (" + + Part._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + + Part.MSG_ID + " INTEGER," + + Part.SEQ + " INTEGER DEFAULT 0," + + Part.CONTENT_TYPE + " TEXT," + + Part.NAME + " TEXT," + + Part.CHARSET + " INTEGER," + + Part.CONTENT_DISPOSITION + " TEXT," + + Part.FILENAME + " TEXT," + + Part.CONTENT_ID + " TEXT," + + Part.CONTENT_LOCATION + " TEXT," + + Part.CT_START + " INTEGER," + + Part.CT_TYPE + " TEXT," + + Part._DATA + " TEXT," + + Part.TEXT + " TEXT);"; + + public static String CREATE_PDU_TABLE_STR = + "CREATE TABLE " + MmsProvider.TABLE_PDU + " (" + + Mms._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + + Mms.THREAD_ID + " INTEGER," + + Mms.DATE + " INTEGER," + + Mms.DATE_SENT + " INTEGER DEFAULT 0," + + Mms.MESSAGE_BOX + " INTEGER," + + Mms.READ + " INTEGER DEFAULT 0," + + Mms.MESSAGE_ID + " TEXT," + + Mms.SUBJECT + " TEXT," + + Mms.SUBJECT_CHARSET + " INTEGER," + + Mms.CONTENT_TYPE + " TEXT," + + Mms.CONTENT_LOCATION + " TEXT," + + Mms.EXPIRY + " INTEGER," + + Mms.MESSAGE_CLASS + " TEXT," + + Mms.MESSAGE_TYPE + " INTEGER," + + Mms.MMS_VERSION + " INTEGER," + + Mms.MESSAGE_SIZE + " INTEGER," + + Mms.PRIORITY + " INTEGER," + + Mms.READ_REPORT + " INTEGER," + + Mms.REPORT_ALLOWED + " INTEGER," + + Mms.RESPONSE_STATUS + " INTEGER," + + Mms.STATUS + " INTEGER," + + Mms.TRANSACTION_ID + " TEXT," + + Mms.RETRIEVE_STATUS + " INTEGER," + + Mms.RETRIEVE_TEXT + " TEXT," + + Mms.RETRIEVE_TEXT_CHARSET + " INTEGER," + + Mms.READ_STATUS + " INTEGER," + + Mms.CONTENT_CLASS + " INTEGER," + + Mms.RESPONSE_TEXT + " TEXT," + + Mms.DELIVERY_TIME + " INTEGER," + + Mms.DELIVERY_REPORT + " INTEGER," + + Mms.LOCKED + " INTEGER DEFAULT 0," + + Mms.SUBSCRIPTION_ID + " INTEGER DEFAULT " + + SubscriptionManager.INVALID_SUBSCRIPTION_ID + ", " + + Mms.SEEN + " INTEGER DEFAULT 0," + + Mms.CREATOR + " TEXT," + + Mms.TEXT_ONLY + " INTEGER DEFAULT 0);"; + + @VisibleForTesting + public static String CREATE_RATE_TABLE_STR = + "CREATE TABLE " + MmsProvider.TABLE_RATE + " (" + + Rate.SENT_TIME + " INTEGER);"; + + @VisibleForTesting + public static String CREATE_DRM_TABLE_STR = + "CREATE TABLE " + MmsProvider.TABLE_DRM + " (" + + BaseColumns._ID + " INTEGER PRIMARY KEY," + + "_data TEXT);"; + + @VisibleForTesting - db.execSQL("CREATE TABLE " + MmsProvider.TABLE_PDU + " (" + - Mms._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + - Mms.THREAD_ID + " INTEGER," + - Mms.DATE + " INTEGER," + - Mms.DATE_SENT + " INTEGER DEFAULT 0," + - Mms.MESSAGE_BOX + " INTEGER," + - Mms.READ + " INTEGER DEFAULT 0," + - Mms.MESSAGE_ID + " TEXT," + - Mms.SUBJECT + " TEXT," + - Mms.SUBJECT_CHARSET + " INTEGER," + - Mms.CONTENT_TYPE + " TEXT," + - Mms.CONTENT_LOCATION + " TEXT," + - Mms.EXPIRY + " INTEGER," + - Mms.MESSAGE_CLASS + " TEXT," + - Mms.MESSAGE_TYPE + " INTEGER," + - Mms.MMS_VERSION + " INTEGER," + - Mms.MESSAGE_SIZE + " INTEGER," + - Mms.PRIORITY + " INTEGER," + - Mms.READ_REPORT + " INTEGER," + - Mms.REPORT_ALLOWED + " INTEGER," + - Mms.RESPONSE_STATUS + " INTEGER," + - Mms.STATUS + " INTEGER," + - Mms.TRANSACTION_ID + " TEXT," + - Mms.RETRIEVE_STATUS + " INTEGER," + - Mms.RETRIEVE_TEXT + " TEXT," + - Mms.RETRIEVE_TEXT_CHARSET + " INTEGER," + - Mms.READ_STATUS + " INTEGER," + - Mms.CONTENT_CLASS + " INTEGER," + - Mms.RESPONSE_TEXT + " TEXT," + - Mms.DELIVERY_TIME + " INTEGER," + - Mms.DELIVERY_REPORT + " INTEGER," + - Mms.LOCKED + " INTEGER DEFAULT 0," + - Mms.SUBSCRIPTION_ID + " INTEGER DEFAULT " - + SubscriptionManager.INVALID_SUBSCRIPTION_ID + ", " + - Mms.SEEN + " INTEGER DEFAULT 0," + - Mms.CREATOR + " TEXT," + - Mms.TEXT_ONLY + " INTEGER DEFAULT 0" + - ");"); + db.execSQL(CREATE_PDU_TABLE_STR); - db.execSQL("CREATE TABLE " + MmsProvider.TABLE_ADDR + " (" + - Addr._ID + " INTEGER PRIMARY KEY," + - Addr.MSG_ID + " INTEGER," + - Addr.CONTACT_ID + " INTEGER," + - Addr.ADDRESS + " TEXT," + - Addr.TYPE + " INTEGER," + - Addr.CHARSET + " INTEGER);"); + db.execSQL(CREATE_ADDR_TABLE_STR); - db.execSQL("CREATE TABLE " + MmsProvider.TABLE_PART + " (" + - Part._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + - Part.MSG_ID + " INTEGER," + - Part.SEQ + " INTEGER DEFAULT 0," + - Part.CONTENT_TYPE + " TEXT," + - Part.NAME + " TEXT," + - Part.CHARSET + " INTEGER," + - Part.CONTENT_DISPOSITION + " TEXT," + - Part.FILENAME + " TEXT," + - Part.CONTENT_ID + " TEXT," + - Part.CONTENT_LOCATION + " TEXT," + - Part.CT_START + " INTEGER," + - Part.CT_TYPE + " TEXT," + - Part._DATA + " TEXT," + - Part.TEXT + " TEXT);"); + db.execSQL(CREATE_PART_TABLE_STR); - db.execSQL("CREATE TABLE " + MmsProvider.TABLE_RATE + " (" + - Rate.SENT_TIME + " INTEGER);"); + db.execSQL(CREATE_RATE_TABLE_STR); - db.execSQL("CREATE TABLE " + MmsProvider.TABLE_DRM + " (" + - BaseColumns._ID + " INTEGER PRIMARY KEY," + - "_data TEXT);"); + db.execSQL(CREATE_DRM_TABLE_STR);
/media/esteban/ACOS/dotOS/packages/providers/TelephonyProvider/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
711
712
713
714
715
716
717
718
719
720
db.execSQL("CREATE INDEX IF NOT EXISTS addrMsgIdIndex ON addr (msg_id)"); } catch (Exception ex) { Log.e(TAG, "got exception creating indices: " + ex.toString()); } } @VisibleForTesting void createMmsTables(SQLiteDatabase db) { // N.B.: Whenever the columns here are changed, the columns in // {@ref MmsSmsProvider} must be changed to match.
+ show +
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
db.execSQL("CREATE TABLE " + MmsProvider.TABLE_PDU + " (" + Mms._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + Mms.THREAD_ID + " INTEGER," + Mms.DATE + " INTEGER," + Mms.DATE_SENT + " INTEGER DEFAULT 0," + Mms.MESSAGE_BOX + " INTEGER," + Mms.READ + " INTEGER DEFAULT 0," + Mms.MESSAGE_ID + " TEXT," + Mms.SUBJECT + " TEXT," + Mms.SUBJECT_CHARSET + " INTEGER," + Mms.CONTENT_TYPE + " TEXT," + Mms.CONTENT_LOCATION + " TEXT," + Mms.EXPIRY + " INTEGER," + Mms.MESSAGE_CLASS + " TEXT," + Mms.MESSAGE_TYPE + " INTEGER," + Mms.MMS_VERSION + " INTEGER," + Mms.MESSAGE_SIZE + " INTEGER," + Mms.PRIORITY + " INTEGER," + Mms.READ_REPORT + " INTEGER," + Mms.REPORT_ALLOWED + " INTEGER," + Mms.RESPONSE_STATUS + " INTEGER," + Mms.STATUS + " INTEGER," + Mms.TRANSACTION_ID + " TEXT," + Mms.RETRIEVE_STATUS + " INTEGER," + Mms.RETRIEVE_TEXT + " TEXT," + Mms.RETRIEVE_TEXT_CHARSET + " INTEGER," + Mms.READ_STATUS + " INTEGER," + Mms.CONTENT_CLASS + " INTEGER," + Mms.RESPONSE_TEXT + " TEXT," + Mms.DELIVERY_TIME + " INTEGER," + Mms.DELIVERY_REPORT + " INTEGER," + Mms.LOCKED + " INTEGER DEFAULT 0," + Mms.SUBSCRIPTION_ID + " INTEGER DEFAULT " + SubscriptionManager.INVALID_SUBSCRIPTION_ID + ", " + Mms.SEEN + " INTEGER DEFAULT 0," + Mms.CREATOR + " TEXT," + Mms.TEXT_ONLY + " INTEGER DEFAULT 0" + ");"); db.execSQL("CREATE TABLE " + MmsProvider.TABLE_ADDR + " (" + Addr._ID + " INTEGER PRIMARY KEY," + Addr.MSG_ID + " INTEGER," + Addr.CONTACT_ID + " INTEGER," + Addr.ADDRESS + " TEXT," + Addr.TYPE + " INTEGER," + Addr.CHARSET + " INTEGER);"); db.execSQL("CREATE TABLE " + MmsProvider.TABLE_PART + " (" + Part._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + Part.MSG_ID + " INTEGER," + Part.SEQ + " INTEGER DEFAULT 0," + Part.CONTENT_TYPE + " TEXT," + Part.NAME + " TEXT," + Part.CHARSET + " INTEGER," + Part.CONTENT_DISPOSITION + " TEXT," + Part.FILENAME + " TEXT," + Part.CONTENT_ID + " TEXT," + Part.CONTENT_LOCATION + " TEXT," + Part.CT_START + " INTEGER," + Part.CT_TYPE + " TEXT," + Part._DATA + " TEXT," + Part.TEXT + " TEXT);"); db.execSQL("CREATE TABLE " + MmsProvider.TABLE_RATE + " (" + Rate.SENT_TIME + " INTEGER);"); db.execSQL("CREATE TABLE " + MmsProvider.TABLE_DRM + " (" + BaseColumns._ID + " INTEGER PRIMARY KEY," + "_data TEXT);");
+ show +
790
791
792
793
794
795
796
797
798
799
// Restricted view of pdu table, only sent/received messages without wap pushes db.execSQL("CREATE VIEW " + MmsProvider.VIEW_PDU_RESTRICTED + " AS " + "SELECT * FROM " + MmsProvider.TABLE_PDU + " WHERE " + "(" + Mms.MESSAGE_BOX + "=" + Mms.MESSAGE_BOX_INBOX + " OR " + Mms.MESSAGE_BOX + "=" + Mms.MESSAGE_BOX_SENT + ")" + " AND " + "(" + Mms.MESSAGE_TYPE + "!=" + PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND + ");"); }

[CVE-2023-21035_1.diff] BackupHelper.java #15
+ /** Signing certificate information for a backed up package. */ + private static class BackupSigningInfoState { + @NonNull + private final Set<byte[]> mCurrentCertDigests; + @NonNull + private final Set<byte[]> mPastCertDigests; + + private BackupSigningInfoState(@NonNull Set<byte[]> currentCertDigests, + @NonNull Set<byte[]> pastCertDigests) { + mCurrentCertDigests = currentCertDigests; + mPastCertDigests = pastCertDigests; + } + + /** + * Write this state as XML. + * + * @param serializer the file to write to + */ + void writeAsXml(@NonNull XmlSerializer serializer) throws IOException { + serializer.startTag(null, TAG_SIGNING_INFO); + + for (byte[] digest : mCurrentCertDigests) { + serializer.startTag(null, TAG_CURRENT_CERTIFICATE); + serializer.attribute( + null, ATTR_CERTIFICATE_DIGEST, + Base64.encodeToString(digest, Base64.NO_WRAP)); + serializer.endTag(null, TAG_CURRENT_CERTIFICATE); + } + + for (byte[] digest : mPastCertDigests) { + serializer.startTag(null, TAG_PAST_CERTIFICATE); + serializer.attribute( + null, ATTR_CERTIFICATE_DIGEST, + Base64.encodeToString(digest, Base64.NO_WRAP)); + serializer.endTag(null, TAG_PAST_CERTIFICATE); + } + + serializer.endTag(null, TAG_SIGNING_INFO); + } + + /** + * Parse the signing information state from XML. + * + * @param parser the data to read + * + * @return the signing information state + */ + @NonNull + static BackupSigningInfoState parseFromXml(@NonNull XmlPullParser parser) + throws IOException, XmlPullParserException { + Set<byte[]> currentCertDigests = new HashSet<>(); + Set<byte[]> pastCertDigests = new HashSet<>(); + + while (true) { + switch (parser.next()) { + case START_TAG: + switch (parser.getName()) { + case TAG_CURRENT_CERTIFICATE: + String currentCertDigest = + parser.getAttributeValue( + null, ATTR_CERTIFICATE_DIGEST); + if (currentCertDigest == null) { + throw new XmlPullParserException( + "Found " + TAG_CURRENT_CERTIFICATE + " without " + + ATTR_CERTIFICATE_DIGEST); + } + currentCertDigests.add( + Base64.decode(currentCertDigest, Base64.NO_WRAP)); + skipToEndOfTag(parser); + break; + case TAG_PAST_CERTIFICATE: + String pastCertDigest = + parser.getAttributeValue( + null, ATTR_CERTIFICATE_DIGEST); + if (pastCertDigest == null) { + throw new XmlPullParserException( + "Found " + TAG_PAST_CERTIFICATE + " without " + + ATTR_CERTIFICATE_DIGEST); + } + pastCertDigests.add( + Base64.decode(pastCertDigest, Base64.NO_WRAP)); + skipToEndOfTag(parser); + break; + default: + Log.w(LOG_TAG, "Found unexpected tag " + parser.getName()); + skipToEndOfTag(parser); + } + + break; + case END_TAG: + return new BackupSigningInfoState( + currentCertDigests, + pastCertDigests); + default: + throw new XmlPullParserException("Could not parse signing info"); + } + } + } + + /** + * Construct the signing information state from a {@link SigningInfo} instance. + * + * @param signingInfo the {@link SigningInfo} instance + * + * @return the state + */ + @NonNull + static BackupSigningInfoState fromSigningInfo(@NonNull SigningInfo signingInfo) { + Set<byte[]> currentCertDigests = new HashSet<>(); + Set<byte[]> pastCertDigests = new HashSet<>(); + + Signature[] apkContentsSigners = signingInfo.getApkContentsSigners(); + for (int i = 0; i < apkContentsSigners.length; i++) { + currentCertDigests.add( + computeSha256DigestBytes(apkContentsSigners[i].toByteArray())); + } + + if (signingInfo.hasPastSigningCertificates()) { + Signature[] signingCertificateHistory = signingInfo.getSigningCertificateHistory(); + for (int i = 0; i < signingCertificateHistory.length; i++) { + pastCertDigests.add( + computeSha256DigestBytes(signingCertificateHistory[i].toByteArray())); + } + } + + return new BackupSigningInfoState(currentCertDigests, pastCertDigests); + } + } + - final @NonNull String mPackageName; - private final @NonNull ArrayList<BackupPermissionState> mPermissionsToRestore; + @NonNull + final String mPackageName; + @NonNull + private final ArrayList<BackupPermissionState> mPermissionsToRestore; + @Nullable + private final BackupSigningInfoState mBackupSigningInfoState; - private BackupPackageState(@NonNull String packageName, - @NonNull ArrayList<BackupPermissionState> permissionsToRestore) { + private BackupPackageState( + @NonNull String packageName, + @NonNull ArrayList<BackupPermissionState> permissionsToRestore, + @Nullable BackupSigningInfoState backupSigningInfoState) { + mBackupSigningInfoState = backupSigningInfoState;
/media/esteban/ACOS/dotOS/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/service/BackupHelper.java
590
591
592
593
594
595
596
597
598
599
perm.setUserSet(mIsUserSet); } } } /** * State that needs to be backed up for a package. */ private static class BackupPackageState {
+ show +
600
601
602
603
604
final @NonNull String mPackageName; private final @NonNull ArrayList<BackupPermissionState> mPermissionsToRestore; private BackupPackageState(@NonNull String packageName, @NonNull ArrayList<BackupPermissionState> permissionsToRestore) {
+ show +
605
606
607
608
609
610
611
612
613
614
mPackageName = packageName; mPermissionsToRestore = permissionsToRestore; } /** * Parse a package state from XML. * * @param parser The data to read * @param context a context to use * @param backupPlatformVersion The platform version the backup was created on

[CVE-2024-43095_1.diff] LightAppPermGroup.kt #4
+ * @param isPlatformPermissionGroup Whether this is a platform permission group + private val isPlatformPermissionGroup: Boolean, - /** - * Whether any of this App Permission SubGroup's permissions are granted - */ - val isGranted = specialLocationGrant ?: permissions.any { it.value.isGrantedIncludingAppOp } + /** Whether any of this App Permission SubGroup's permissions are granted */ + val isGranted = + specialLocationGrant + ?: permissions.any { + val mayGrantByPlatformOrSystem = + !isPlatformPermissionGroup || it.value.isPlatformOrSystem + it.value.isGranted && mayGrantByPlatformOrSystem + }
/media/esteban/ACOS/dotOS/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt
152
153
154
155
156
157
158
159
160
161
* * @param permissions The permissions contained within this subgroup, a subset of those contained * in the full group * @param specialLocationGrant Whether this is a special location package */ data class AppPermSubGroup internal constructor( private val permissions: Map<String, LightPermission>, private val packageInfo: LightPackageInfo, private val specialLocationGrant: Boolean? ) {
+ show +
162
163
164
165
/** * Whether any of this App Permission SubGroup's permissions are granted */ val isGranted = specialLocationGrant ?: permissions.any { it.value.isGrantedIncludingAppOp }
+ show +
166
167
168
169
170
171
172
173
174
175
/** * Whether any of this App Permission SubGroup's permissions are granted excluding * auto granted permissions during install time with flag RevokeWhenRequested */ val isGrantedExcludeRevokeWhenRequestedPermissions = specialLocationGrant ?: permissions .any { it.value.isGrantedIncludingAppOp && !it.value.isRevokeWhenRequested } /** * Whether any of this App Permission SubGroup's permissions are granted by default

[CVE-2024-43095_1.diff] PermGroupLiveData.kt #3
- val permGroup = PermGroup(LightPermGroupInfo(groupInfo), permissionInfos) - - value = permGroup - - val packageNames = permissionInfos.values.map { permInfo -> permInfo.packageName } - .toMutableSet() + val packageNames = permInfos.map { permInfo -> permInfo.packageName }.toMutableSet() - + if (!packageLiveDatas.all { it.value.isInitialized }) { + return + } + for (permInfo in permInfos) { + val lightPackageInfo = packageLiveDatas[permInfo.packageName]?.value + val isSystem = + lightPackageInfo?.let { it.appFlags and ApplicationInfo.FLAG_SYSTEM != 0 } + permissionInfos[permInfo.name] = LightPermInfo(permInfo, isSystem) + } + + val permGroup = PermGroup(LightPermGroupInfo(groupInfo), permissionInfos) + value = permGroup
/media/esteban/ACOS/dotOS/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupLiveData.kt
94
95
96
97
98
99
100
101
102
103
} is PermissionInfo -> { permissionInfos[groupInfo.name] = LightPermInfo(groupInfo as PermissionInfo) } else -> { value = null return } }
+ show +
104
105
106
107
108
109
val permGroup = PermGroup(LightPermGroupInfo(groupInfo), permissionInfos) value = permGroup val packageNames = permissionInfos.values.map { permInfo -> permInfo.packageName } .toMutableSet()
+ show +
110
111
112
113
114
115
116
117
118
119
packageNames.add(groupInfo.packageName) // TODO ntmyren: What if the package isn't installed for the system user? val getLiveData = { packageName: String -> LightPackageInfoLiveData[packageName, UserHandle.SYSTEM] } setSourcesToDifference(packageNames, packageLiveDatas, getLiveData) } override fun onInactive() {

[CVE-2023-21243_1.diff] NetworkSuggestionStoreDataTest.java #1
+ ActivityManager activityManager = context.getSystemService(ActivityManager.class); + mIsLowMemory = activityManager.isLowRamDevice(); + if (config.getServiceFriendlyNames() != null && isFromSuggestion) { + Log.e(TAG, "Passpoint from suggestion should not have ServiceFriendlyNames"); + return false; + } + if (getPasspointProviderWithPackage(packageName).size() + >= WifiManager.getMaxNumberOfNetworkSuggestionsPerApp(mIsLowMemory)) { + Log.e(TAG, "packageName " + packageName + " has too many passpoint with exceed the " + + "limitation"); + return false; + } - Map<String, String> friendlyNames = new HashMap<>(); - friendlyNames.put("en", friendlyName); - friendlyNames.put("kr", friendlyName + 1); - friendlyNames.put("jp", friendlyName + 2); - config.setServiceFriendlyNames(friendlyNames);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionStoreDataTest.java
518
519
520
521
522
523
524
525
526
527
return deserializedNetworkSuggestionsMap.getValue(); } private PasspointConfiguration createTestConfigWithUserCredential(String fqdn, String friendlyName) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
528
529
530
531
532
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
533
534
535
536
537
538
539
540
541
542
Credential credential = new Credential(); credential.setRealm(TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
* * @return {@link PasspointConfiguration} */ private PasspointConfiguration createTestConfigWithUserCredential(String fqdn, String friendlyName) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
4868
4869
4870
4871
4872
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
Credential credential = new Credential(); credential.setRealm(TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
342
343
344
345
346
347
348
349
350
351
* * @return {@link PasspointConfiguration} */ private PasspointConfiguration createTestConfigWithUserCredentialAndRealm(String fqdn, String friendlyName, String realm) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
352
353
354
355
356
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
357
358
359
360
361
362
363
364
365
366
Credential credential = new Credential(); credential.setRealm(realm != null ? realm : TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);

[CVE-2023-21243_1.diff] WifiNetworkSuggestionsManagerTest.java #1
- Map<String, String> friendlyNames = new HashMap<>(); - friendlyNames.put("en", friendlyName); - friendlyNames.put("kr", friendlyName + 1); - friendlyNames.put("jp", friendlyName + 2); - config.setServiceFriendlyNames(friendlyNames);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionStoreDataTest.java
518
519
520
521
522
523
524
525
526
527
return deserializedNetworkSuggestionsMap.getValue(); } private PasspointConfiguration createTestConfigWithUserCredential(String fqdn, String friendlyName) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
528
529
530
531
532
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
533
534
535
536
537
538
539
540
541
542
Credential credential = new Credential(); credential.setRealm(TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
* * @return {@link PasspointConfiguration} */ private PasspointConfiguration createTestConfigWithUserCredential(String fqdn, String friendlyName) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
4868
4869
4870
4871
4872
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
Credential credential = new Credential(); credential.setRealm(TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
342
343
344
345
346
347
348
349
350
351
* * @return {@link PasspointConfiguration} */ private PasspointConfiguration createTestConfigWithUserCredentialAndRealm(String fqdn, String friendlyName, String realm) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
352
353
354
355
356
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
357
358
359
360
361
362
363
364
365
366
Credential credential = new Credential(); credential.setRealm(realm != null ? realm : TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);

[CVE-2023-21243_1.diff] PasspointManagerTest.java #4
+import android.app.ActivityManager; + @Mock ActivityManager mActivityManager; + when(mContext.getSystemService(ActivityManager.class)).thenReturn(mActivityManager); - Map<String, String> friendlyNames = new HashMap<>(); - friendlyNames.put("en", friendlyName); - friendlyNames.put("kr", friendlyName + 1); - friendlyNames.put("jp", friendlyName + 2); - config.setServiceFriendlyNames(friendlyNames);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionStoreDataTest.java
518
519
520
521
522
523
524
525
526
527
return deserializedNetworkSuggestionsMap.getValue(); } private PasspointConfiguration createTestConfigWithUserCredential(String fqdn, String friendlyName) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
528
529
530
531
532
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
533
534
535
536
537
538
539
540
541
542
Credential credential = new Credential(); credential.setRealm(TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
* * @return {@link PasspointConfiguration} */ private PasspointConfiguration createTestConfigWithUserCredential(String fqdn, String friendlyName) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
4868
4869
4870
4871
4872
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
Credential credential = new Credential(); credential.setRealm(TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
342
343
344
345
346
347
348
349
350
351
* * @return {@link PasspointConfiguration} */ private PasspointConfiguration createTestConfigWithUserCredentialAndRealm(String fqdn, String friendlyName, String realm) { PasspointConfiguration config = new PasspointConfiguration(); HomeSp homeSp = new HomeSp(); homeSp.setFqdn(fqdn); homeSp.setFriendlyName(friendlyName); config.setHomeSp(homeSp);
+ show +
352
353
354
355
356
Map<String, String> friendlyNames = new HashMap<>(); friendlyNames.put("en", friendlyName); friendlyNames.put("kr", friendlyName + 1); friendlyNames.put("jp", friendlyName + 2); config.setServiceFriendlyNames(friendlyNames);
+ show +
357
358
359
360
361
362
363
364
365
366
Credential credential = new Credential(); credential.setRealm(realm != null ? realm : TEST_REALM); credential.setCaCertificate(FakeKeys.CA_CERT0); Credential.UserCredential userCredential = new Credential.UserCredential(); userCredential.setUsername("username"); userCredential.setPassword("password"); userCredential.setEapType(EAPConstants.EAP_TTLS); userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP); credential.setUserCredential(userCredential); config.setCredential(credential);

[CVE-2023-21033_1.diff] WifiConfigManagerTest.java #5
- WifiConfiguration invalidKeyMgmtConfig = WifiConfigurationTestUtil.createEapNetwork(); - invalidKeyMgmtConfig.allowedKeyManagement.clear(WifiConfiguration.KeyMgmt.IEEE8021X); - invalidKeyMgmtConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK); - noAssociationConfig.numRebootsSinceLastUse = 1; - noAssociationConfig.numAssociation = 0; - configsInDeletionOrder.add(invalidKeyMgmtConfig);
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
WifiConfiguration notRecentConfig = WifiConfigurationTestUtil.createPskNetwork(); notRecentConfig.lastConnected = 1; WifiConfiguration oneRebootSaeConfig = WifiConfigurationTestUtil.createSaeNetwork(); oneRebootSaeConfig.numRebootsSinceLastUse = 1; WifiConfiguration oneRebootOpenConfig = WifiConfigurationTestUtil.createOpenNetwork(); oneRebootOpenConfig.numRebootsSinceLastUse = 1; oneRebootOpenConfig.numAssociation = 1; WifiConfiguration noAssociationConfig = WifiConfigurationTestUtil.createOpenNetwork(); noAssociationConfig.numRebootsSinceLastUse = 1; noAssociationConfig.numAssociation = 0;
+ show +
7011
7012
7013
7014
7015
7016
7017
WifiConfiguration invalidKeyMgmtConfig = WifiConfigurationTestUtil.createEapNetwork(); invalidKeyMgmtConfig.allowedKeyManagement.clear(WifiConfiguration.KeyMgmt.IEEE8021X); invalidKeyMgmtConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK); noAssociationConfig.numRebootsSinceLastUse = 1; noAssociationConfig.numAssociation = 0; configsInDeletionOrder.add(invalidKeyMgmtConfig);
+ show +
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
configsInDeletionOrder.add(noAssociationConfig); configsInDeletionOrder.add(oneRebootOpenConfig); configsInDeletionOrder.add(oneRebootSaeConfig); configsInDeletionOrder.add(notRecentConfig); configsInDeletionOrder.add(recentConfig); configsInDeletionOrder.add(newlyAddedConfig); configsInDeletionOrder.add(lessDeletionPriorityConfig); configsInDeletionOrder.add(currentConfig); // Add carrier configs to flush out the other configs, since they are deleted last.

[CVE-2022-20463_1.diff] WifiServiceImpl.java #1
- List<WifiConfiguration> networks = mWifiThreadRunner.call( - () -> mWifiConfigManager.getSavedNetworks(Process.WIFI_UID), - Collections.emptyList()); - for (WifiConfiguration network : networks) { - removeNetwork(network.networkId, packageName); - } + mWifiThreadRunner.run(() -> { + List<WifiConfiguration> networks = mWifiConfigManager + .getSavedNetworks(Process.WIFI_UID); + EventLog.writeEvent(0x534e4554, "231985227", -1, + "Remove certs for factory reset"); + for (WifiConfiguration network : networks) { + if (network.isEnterprise()) { + mWifiInjector.getWifiKeyStore().removeKeys(network.enterpriseConfig, true); + } + mWifiConfigManager.removeNetwork(network.networkId, callingUid, packageName); + } + });
/media/esteban/ACOS/dotOS/packages/modules/Wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
// Turn mobile hotspot off stopSoftApInternal(WifiManager.IFACE_IP_MODE_UNSPECIFIED); } if (mUserManager.hasUserRestrictionForUser( UserManager.DISALLOW_CONFIG_WIFI, UserHandle.getUserHandleForUid(Binder.getCallingUid()))) { return; } // Delete all Wifi SSIDs
+ show +
4090
4091
4092
4093
4094
List<WifiConfiguration> networks = mWifiThreadRunner.call( () -> mWifiConfigManager.getSavedNetworks(Process.WIFI_UID), Collections.emptyList()); for (WifiConfiguration network : networks) { removeNetwork(network.networkId, packageName);
+ show +
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
} // Delete all Passpoint configurations List<PasspointConfiguration> configs = mWifiThreadRunner.call( () -> mPasspointManager.getProviderConfigs(Process.WIFI_UID /* ignored */, true), Collections.emptyList()); for (PasspointConfiguration config : configs) { removePasspointConfigurationInternal(null, config.getUniqueId()); } mWifiThreadRunner.post(() -> { mPasspointManager.clearAnqpRequestsAndFlushCache();

[CVE-2023-21283_1.diff] TelecomSystemTest.java #1
+ return mLatestParcelableConnection; - protected ParcelableCall makeConferenceCall() throws Exception { - IdPair callId1 = startAndMakeActiveOutgoingCall("650-555-1212", - mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA); + protected ParcelableCall makeConferenceCall( + Intent callIntentExtras1, Intent callIntentExtras2) throws Exception { + IdPair callId1 = startAndMakeActiveOutgoingCallWithExtras("650-555-1212", + mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA, callIntentExtras1); - IdPair callId2 = startAndMakeActiveOutgoingCall("650-555-1213", - mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA); + IdPair callId2 = startAndMakeActiveOutgoingCallWithExtras("650-555-1213", + mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA, callIntentExtras2);
/media/esteban/ACOS/dotOS/packages/services/Telecomm/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
402
403
404
405
406
407
408
409
410
411
mConnectionServiceFixtureB.waitForHandlerToClear(); // Forcefully clean all sessions at the end of the test, which will also log any stale // sessions for debugging. Log.getSessionManager().cleanupStaleSessions(0); mTelecomSystem = null; super.tearDown(); }
+ show +
412
413
414
415
416
417
protected ParcelableCall makeConferenceCall() throws Exception { IdPair callId1 = startAndMakeActiveOutgoingCall("650-555-1212", mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA); IdPair callId2 = startAndMakeActiveOutgoingCall("650-555-1213", mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA);
+ show +
418
419
420
421
422
423
424
425
426
427
IInCallAdapter inCallAdapter = mInCallServiceFixtureX.getInCallAdapter(); inCallAdapter.conference(callId1.mCallId, callId2.mCallId); // Wait for the handler in ConnectionService waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT); ParcelableCall call1 = mInCallServiceFixtureX.getCall(callId1.mCallId); ParcelableCall call2 = mInCallServiceFixtureX.getCall(callId2.mCallId); // Check that the two calls end up with a parent in the end assertNotNull(call1.getParentCallId()); assertNotNull(call2.getParentCallId());

[CVE-2023-21103_1.diff] PhoneAccountRegistrar.java #6
- ByteArrayOutputStream stream = new ByteArrayOutputStream(); - value.writeToStream(stream); - byte[] iconByteArray = stream.toByteArray(); - String text = Base64.encodeToString(iconByteArray, 0, iconByteArray.length, 0); - + String text = writeIconToBase64String(value); + public static String writeIconToBase64String(Icon icon) throws IOException { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + icon.writeToStream(stream); + byte[] iconByteArray = stream.toByteArray(); + return Base64.encodeToString(iconByteArray, 0, iconByteArray.length, 0); + } +
/media/esteban/ACOS/dotOS/packages/services/Telecomm/src/com/android/server/telecom/PhoneAccountRegistrar.java
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
serializer.text(Objects.toString(value)); serializer.endTag(null, TAG_VALUE); } } serializer.endTag(null, tagName); } protected void writeIconIfNonNull(String tagName, Icon value, XmlSerializer serializer) throws IOException { if (value != null) {
+ show +
1492
1493
1494
1495
ByteArrayOutputStream stream = new ByteArrayOutputStream(); value.writeToStream(stream); byte[] iconByteArray = stream.toByteArray(); String text = Base64.encodeToString(iconByteArray, 0, iconByteArray.length, 0);
+ show +
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
serializer.startTag(null, tagName); serializer.text(text); serializer.endTag(null, tagName); } } protected void writeLong(String tagName, long value, XmlSerializer serializer) throws IOException { serializer.startTag(null, tagName);

[CVE-2023-21111_1.diff] PhoneAccountRegistrar.java #6
- ByteArrayOutputStream stream = new ByteArrayOutputStream(); - value.writeToStream(stream); - byte[] iconByteArray = stream.toByteArray(); - String text = Base64.encodeToString(iconByteArray, 0, iconByteArray.length, 0); - + String text = writeIconToBase64String(value); + public static String writeIconToBase64String(Icon icon) throws IOException { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + icon.writeToStream(stream); + byte[] iconByteArray = stream.toByteArray(); + return Base64.encodeToString(iconByteArray, 0, iconByteArray.length, 0); + } +
/media/esteban/ACOS/dotOS/packages/services/Telecomm/src/com/android/server/telecom/PhoneAccountRegistrar.java
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
serializer.text(Objects.toString(value)); serializer.endTag(null, TAG_VALUE); } } serializer.endTag(null, tagName); } protected void writeIconIfNonNull(String tagName, Icon value, XmlSerializer serializer) throws IOException { if (value != null) {
+ show +
1492
1493
1494
1495
ByteArrayOutputStream stream = new ByteArrayOutputStream(); value.writeToStream(stream); byte[] iconByteArray = stream.toByteArray(); String text = Base64.encodeToString(iconByteArray, 0, iconByteArray.length, 0);
+ show +
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
serializer.startTag(null, tagName); serializer.text(text); serializer.endTag(null, tagName); } } protected void writeLong(String tagName, long value, XmlSerializer serializer) throws IOException { serializer.startTag(null, tagName);

[CVE-2023-40093_1.diff] BUILD.gn #3
- if (skia_support_gpu) { - defines += [ "SK_SUPPORT_GPU=1" ] - } else { - defines += [ "SK_SUPPORT_GPU=0" ] + if (skia_use_ganesh_backend) { + defines += [ "SK_GANESH" ]
/media/esteban/ACOS/dotOS/external/pdfium/skia/BUILD.gn
29
30
31
32
33
34
35
36
37
38
defines += [ "SK_FREETYPE_MINIMUM_RUNTIME_VERSION=(((FREETYPE_MAJOR) * 0x01000000) | ((FREETYPE_MINOR) * 0x00010000) | ((FREETYPE_PATCH) * 0x00000100))" ] } if (is_component_build) { defines += [ "SKIA_DLL", "GR_GL_IGNORE_ES3_MSAA=0", ] }
+ show +
39
40
41
42
if (skia_support_gpu) { defines += [ "SK_SUPPORT_GPU=1" ] } else { defines += [ "SK_SUPPORT_GPU=0" ]
+ show +
43
44
45
46
47
48
49
50
51
52
} if (skia_use_gl) { defines += [ "SK_GL" ] } if (is_android) { defines += [ "SK_BUILD_FOR_ANDROID", "USE_CHROMIUM_SKIA",

[CVE-2020-0478_1.diff] gtest-port.cc #17
- Notification* thread_can_start) - : thread_(ThreadWithParamSupport::CreateThread(runnable, - thread_can_start)) { -} + Notification *thread_can_start) + : thread_( + ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) {} -ThreadWithParamBase::~ThreadWithParamBase() { - Join(); -} +ThreadWithParamBase::~ThreadWithParamBase() { Join(); }
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-port.cc
511
512
513
514
515
516
517
518
519
520
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
521
522
523
524
525
526
527
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
528
529
530
531
532
533
534
535
536
537
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
366
367
368
369
370
371
372
373
374
375
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
376
377
378
379
380
381
382
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
383
384
385
386
387
388
389
390
391
392
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-port.cc
505
506
507
508
509
510
511
512
513
514
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
515
516
517
518
519
520
521
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
522
523
524
525
526
527
528
529
530
531
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
8925
8926
8927
8928
8929
8930
8931
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-port.cc
422
423
424
425
426
427
428
429
430
431
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
432
433
434
435
436
437
438
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
439
440
441
442
443
444
445
446
447
448
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-port.cc
505
506
507
508
509
510
511
512
513
514
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
515
516
517
518
519
520
521
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
522
523
524
525
526
527
528
529
530
531
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has

[CVE-2020-0478_1.diff] gtest-port.cc #24
- const ThreadIdAndHandle* tah = - reinterpret_cast<const ThreadIdAndHandle*>(param); - GTEST_CHECK_( - ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0); + const ThreadIdAndHandle *tah = + reinterpret_cast<const ThreadIdAndHandle *>(param); + GTEST_CHECK_(::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-port.cc
659
660
661
662
663
664
665
666
667
668
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
669
670
671
672
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
673
674
675
676
677
678
679
680
681
682
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); #ifdef _MSC_VER
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
511
512
513
514
515
516
517
518
519
520
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
521
522
523
524
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
525
526
527
528
529
530
531
532
533
534
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals;
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-port.cc
650
651
652
653
654
655
656
657
658
659
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
660
661
662
663
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
664
665
666
667
668
669
670
671
672
673
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); #ifdef _MSC_VER
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
9070
9071
9072
9073
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-port.cc
567
568
569
570
571
572
573
574
575
576
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
577
578
579
580
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
581
582
583
584
585
586
587
588
589
590
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); MemoryIsNotDeallocated memory_is_not_deallocated;
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-port.cc
650
651
652
653
654
655
656
657
658
659
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
660
661
662
663
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
664
665
666
667
668
669
670
671
672
673
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); #ifdef _MSC_VER

[CVE-2020-0470_1.diff] gtest-port.cc #17
- Notification* thread_can_start) - : thread_(ThreadWithParamSupport::CreateThread(runnable, - thread_can_start)) { -} + Notification *thread_can_start) + : thread_( + ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) {} -ThreadWithParamBase::~ThreadWithParamBase() { - Join(); -} +ThreadWithParamBase::~ThreadWithParamBase() { Join(); }
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-port.cc
511
512
513
514
515
516
517
518
519
520
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
521
522
523
524
525
526
527
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
528
529
530
531
532
533
534
535
536
537
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
366
367
368
369
370
371
372
373
374
375
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
376
377
378
379
380
381
382
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
383
384
385
386
387
388
389
390
391
392
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-port.cc
505
506
507
508
509
510
511
512
513
514
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
515
516
517
518
519
520
521
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
522
523
524
525
526
527
528
529
530
531
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
8925
8926
8927
8928
8929
8930
8931
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-port.cc
422
423
424
425
426
427
428
429
430
431
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
432
433
434
435
436
437
438
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
439
440
441
442
443
444
445
446
447
448
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-port.cc
505
506
507
508
509
510
511
512
513
514
// Prohibit instantiation. ThreadWithParamSupport(); GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport); }; } // namespace ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ show +
515
516
517
518
519
520
521
Notification* thread_can_start) : thread_(ThreadWithParamSupport::CreateThread(runnable, thread_can_start)) { } ThreadWithParamBase::~ThreadWithParamBase() { Join();
+ show +
522
523
524
525
526
527
528
529
530
531
} void ThreadWithParamBase::Join() { GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0) << "Failed to join the thread with error " << ::GetLastError() << "."; } // Maps a thread to a set of ThreadIdToThreadLocals that have values // instantiated on that thread and notifies them when the thread exits. A // ThreadLocal instance is expected to persist until all threads it has

[CVE-2020-0470_1.diff] gtest-port.cc #24
- const ThreadIdAndHandle* tah = - reinterpret_cast<const ThreadIdAndHandle*>(param); - GTEST_CHECK_( - ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0); + const ThreadIdAndHandle *tah = + reinterpret_cast<const ThreadIdAndHandle *>(param); + GTEST_CHECK_(::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-port.cc
659
660
661
662
663
664
665
666
667
668
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
669
670
671
672
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
673
674
675
676
677
678
679
680
681
682
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); #ifdef _MSC_VER
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
511
512
513
514
515
516
517
518
519
520
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
521
522
523
524
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
525
526
527
528
529
530
531
532
533
534
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals;
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-port.cc
650
651
652
653
654
655
656
657
658
659
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
660
661
662
663
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
664
665
666
667
668
669
670
671
672
673
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); #ifdef _MSC_VER
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
9070
9071
9072
9073
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-port.cc
567
568
569
570
571
572
573
574
575
576
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
577
578
579
580
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
581
582
583
584
585
586
587
588
589
590
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); MemoryIsNotDeallocated memory_is_not_deallocated;
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-port.cc
650
651
652
653
654
655
656
657
658
659
// blocked by it. ::SetThreadPriority(watcher_thread, ::GetThreadPriority(::GetCurrentThread())); ::ResumeThread(watcher_thread); ::CloseHandle(watcher_thread); } // Monitors exit from a given thread and notifies those // ThreadIdToThreadLocals about thread termination. static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ show +
660
661
662
663
const ThreadIdAndHandle* tah = reinterpret_cast<const ThreadIdAndHandle*>(param); GTEST_CHECK_( ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ show +
664
665
666
667
668
669
670
671
672
673
OnThreadExit(tah->first); ::CloseHandle(tah->second); delete tah; return 0; } // Returns map of thread local instances. static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() { mutex_.AssertHeld(); #ifdef _MSC_VER

[CVE-2020-0478_1.diff] gtest-death-test.cc #12
-# define GTEST_DEATH_TEST_CHECK_(expression) \ - do { \ - if (!::testing::internal::IsTrue(expression)) { \ - DeathTestAbort( \ - ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ - + ::testing::internal::StreamableToString(__LINE__) + ": " \ - + #expression); \ - } \ +#define GTEST_DEATH_TEST_CHECK_(expression) \ + do { \ + if (!::testing::internal::IsTrue(expression)) { \ + DeathTestAbort(::std::string("CHECK failed: File ") + __FILE__ + \ + ", line " + \ + ::testing::internal::StreamableToString(__LINE__) + \ + ": " + #expression); \ + } \
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-death-test.cc
297
298
299
300
301
302
303
304
305
306
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
307
308
309
310
311
312
313
314
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
315
316
317
318
319
320
321
322
323
324
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
273
274
275
276
277
278
279
280
281
282
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
283
284
285
286
287
288
289
290
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
291
292
293
294
295
296
297
298
299
300
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-death-test.cc
295
296
297
298
299
300
301
302
303
304
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
305
306
307
308
309
310
311
312
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
313
314
315
316
317
318
319
320
321
322
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
7113
7114
7115
7116
7117
7118
7119
7120
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
289
290
291
292
293
294
295
296
297
298
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
299
300
301
302
303
304
305
306
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
307
308
309
310
311
312
313
314
315
316
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-death-test.cc
296
297
298
299
300
301
302
303
304
305
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
306
307
308
309
310
311
312
313
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
314
315
316
317
318
319
320
321
322
323
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \

[CVE-2020-0478_1.diff] gtest-death-test.cc #17
- case kDeathTestReturned: - set_outcome(RETURNED); - break; - case kDeathTestThrew: - set_outcome(THREW); - break; - case kDeathTestLived: - set_outcome(LIVED); - break; + case kDeathTestReturned: set_outcome(RETURNED); break; + case kDeathTestThrew: set_outcome(THREW); break; + case kDeathTestLived: set_outcome(LIVED); break;
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-death-test.cc
468
469
470
471
472
473
474
475
476
477
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
478
479
480
481
482
483
484
485
486
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
487
488
489
490
491
492
493
494
495
496
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
442
443
444
445
446
447
448
449
450
451
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
452
453
454
455
456
457
458
459
460
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
461
462
463
464
465
466
467
468
469
470
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-death-test.cc
466
467
468
469
470
471
472
473
474
475
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
476
477
478
479
480
481
482
483
484
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
485
486
487
488
489
490
491
492
493
494
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
7282
7283
7284
7285
7286
7287
7288
7289
7290
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
458
459
460
461
462
463
464
465
466
467
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
468
469
470
471
472
473
474
475
476
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
477
478
479
480
481
482
483
484
485
486
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
6800
6801
6802
6803
6804
6805
6806
6807
6808
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-death-test.cc
394
395
396
397
398
399
400
401
402
403
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
404
405
406
407
408
409
410
411
412
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
413
414
415
416
417
418
419
420
421
422
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-death-test.cc
467
468
469
470
471
472
473
474
475
476
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
477
478
479
480
481
482
483
484
485
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
486
487
488
489
490
491
492
493
494
495
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "

[CVE-2020-0470_1.diff] gtest-death-test.cc #12
-# define GTEST_DEATH_TEST_CHECK_(expression) \ - do { \ - if (!::testing::internal::IsTrue(expression)) { \ - DeathTestAbort( \ - ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ - + ::testing::internal::StreamableToString(__LINE__) + ": " \ - + #expression); \ - } \ +#define GTEST_DEATH_TEST_CHECK_(expression) \ + do { \ + if (!::testing::internal::IsTrue(expression)) { \ + DeathTestAbort(::std::string("CHECK failed: File ") + __FILE__ + \ + ", line " + \ + ::testing::internal::StreamableToString(__LINE__) + \ + ": " + #expression); \ + } \
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-death-test.cc
297
298
299
300
301
302
303
304
305
306
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
307
308
309
310
311
312
313
314
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
315
316
317
318
319
320
321
322
323
324
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
273
274
275
276
277
278
279
280
281
282
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
283
284
285
286
287
288
289
290
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
291
292
293
294
295
296
297
298
299
300
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-death-test.cc
295
296
297
298
299
300
301
302
303
304
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
305
306
307
308
309
310
311
312
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
313
314
315
316
317
318
319
320
321
322
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
7113
7114
7115
7116
7117
7118
7119
7120
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
289
290
291
292
293
294
295
296
297
298
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
299
300
301
302
303
304
305
306
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
307
308
309
310
311
312
313
314
315
316
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-death-test.cc
296
297
298
299
300
301
302
303
304
305
_exit(1); } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails.
+ show +
306
307
308
309
310
311
312
313
# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ DeathTestAbort( \ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \ + ::testing::internal::StreamableToString(__LINE__) + ": " \ + #expression); \ } \
+ show +
314
315
316
317
318
319
320
321
322
323
} while (::testing::internal::AlwaysFalse()) // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for // evaluating any system call that fulfills two conditions: it must return // -1 on failure, and set errno to EINTR when it is interrupted and // should be tried again. The macro expands to a loop that repeatedly // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \

[CVE-2020-0470_1.diff] gtest-death-test.cc #17
- case kDeathTestReturned: - set_outcome(RETURNED); - break; - case kDeathTestThrew: - set_outcome(THREW); - break; - case kDeathTestLived: - set_outcome(LIVED); - break; + case kDeathTestReturned: set_outcome(RETURNED); break; + case kDeathTestThrew: set_outcome(THREW); break; + case kDeathTestLived: set_outcome(LIVED); break;
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest-death-test.cc
468
469
470
471
472
473
474
475
476
477
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
478
479
480
481
482
483
484
485
486
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
487
488
489
490
491
492
493
494
495
496
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
442
443
444
445
446
447
448
449
450
451
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
452
453
454
455
456
457
458
459
460
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
461
462
463
464
465
466
467
468
469
470
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-death-test.cc
466
467
468
469
470
471
472
473
474
475
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
476
477
478
479
480
481
482
483
484
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
485
486
487
488
489
490
491
492
493
494
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
7282
7283
7284
7285
7286
7287
7288
7289
7290
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
458
459
460
461
462
463
464
465
466
467
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
468
469
470
471
472
473
474
475
476
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
477
478
479
480
481
482
483
484
485
486
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
6800
6801
6802
6803
6804
6805
6806
6807
6808
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-death-test.cc
394
395
396
397
398
399
400
401
402
403
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
404
405
406
407
408
409
410
411
412
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
413
414
415
416
417
418
419
420
421
422
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-death-test.cc
467
468
469
470
471
472
473
474
475
476
// its success), so it's okay to call this in the parent before // the child process has exited. do { bytes_read = posix::Read(read_fd(), &flag, 1); } while (bytes_read == -1 && errno == EINTR); if (bytes_read == 0) { set_outcome(DIED); } else if (bytes_read == 1) { switch (flag) {
+ show +
477
478
479
480
481
482
483
484
485
case kDeathTestReturned: set_outcome(RETURNED); break; case kDeathTestThrew: set_outcome(THREW); break; case kDeathTestLived: set_outcome(LIVED); break;
+ show +
486
487
488
489
490
491
492
493
494
495
case kDeathTestInternalError: FailFromInternalError(read_fd()); // Does not return. break; default: GTEST_LOG_(FATAL) << "Death test child process reported " << "unexpected status byte (" << static_cast<unsigned int>(flag) << ")"; } } else { GTEST_LOG_(FATAL) << "Read from death test child process failed: "

[CVE-2020-0478_1.diff] gtest.cc #46
- const std::vector<std::string> lhs_lines = - SplitEscapedString(lhs_value); - const std::vector<std::string> rhs_lines = - SplitEscapedString(rhs_value); + const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); + const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest.cc
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1533
1534
1535
1536
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
msg << "\nTo be equal to: " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1332
1333
1334
1335
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1345
1346
1347
1348
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
msg << "\nTo be equal to: " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
2780
2781
2782
2783
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1377
1378
1379
1380
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1341
1342
1343
1344
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.

[CVE-2020-0478_1.diff] gtest.cc #93
- const TestPartResult& test_part_result) { - return (Message() - << internal::FormatFileLocation(test_part_result.file_name(), - test_part_result.line_number()) - << " " << TestPartResultTypeToString(test_part_result.type()) - << test_part_result.message()).GetString(); + const TestPartResult &test_part_result) { + return (Message() << internal::FormatFileLocation( + test_part_result.file_name(), + test_part_result.line_number()) + << " " + << TestPartResultTypeToString(test_part_result.type()) + << test_part_result.message()) + .GetString(); -static void PrintTestPartResult(const TestPartResult& test_part_result) { - const std::string& result = - PrintTestPartResultToString(test_part_result); +static void PrintTestPartResult(const TestPartResult &test_part_result) { + const std::string &result = PrintTestPartResultToString(test_part_result);
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest.cc
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
} } namespace internal { namespace { enum class GTestColor { kDefault, kRed, kGreen, kYellow }; } // namespace // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.

[CVE-2020-0478_1.diff] gtest.cc #126
-void UnitTest::AddTestPartResult( - TestPartResult::Type result_type, - const char* file_name, - int line_number, - const std::string& message, - const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) { +void UnitTest::AddTestPartResult(TestPartResult::Type result_type, + const char *file_name, int line_number, + const std::string &message, + const std::string &os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_) {
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest.cc
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
5281
5282
5283
5284
5285
5286
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (size_t i = impl_->gtest_trace_stack().size(); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4108
4109
4110
4111
4112
4113
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4716
4717
4718
4719
4720
4721
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
5556
5557
5558
5559
5560
5561
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4632
4633
4634
4635
4636
4637
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4768
4769
4770
4771
4772
4773
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (size_t i = impl_->gtest_trace_stack().size(); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)

[CVE-2020-0470_1.diff] gtest.cc #46
- const std::vector<std::string> lhs_lines = - SplitEscapedString(lhs_value); - const std::vector<std::string> rhs_lines = - SplitEscapedString(rhs_value); + const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); + const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest.cc
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1533
1534
1535
1536
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
msg << "\nTo be equal to: " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1332
1333
1334
1335
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1345
1346
1347
1348
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
msg << "\nTo be equal to: " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
2780
2781
2782
2783
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1377
1378
1379
1380
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
msg << "\n " << rhs_expression; if (rhs_value != rhs_expression) { msg << "\n Which is: " << rhs_value; } if (ignoring_case) { msg << "\nIgnoring case"; } if (!lhs_value.empty() && !rhs_value.empty()) {
+ show +
1341
1342
1343
1344
const std::vector<std::string> lhs_lines = SplitEscapedString(lhs_value); const std::vector<std::string> rhs_lines = SplitEscapedString(rhs_value);
+ show +
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) { msg << "\nWith diff:\n" << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines); } } return AssertionFailure() << msg; } // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.

[CVE-2020-0470_1.diff] gtest.cc #93
- const TestPartResult& test_part_result) { - return (Message() - << internal::FormatFileLocation(test_part_result.file_name(), - test_part_result.line_number()) - << " " << TestPartResultTypeToString(test_part_result.type()) - << test_part_result.message()).GetString(); + const TestPartResult &test_part_result) { + return (Message() << internal::FormatFileLocation( + test_part_result.file_name(), + test_part_result.line_number()) + << " " + << TestPartResultTypeToString(test_part_result.type()) + << test_part_result.message()) + .GetString(); -static void PrintTestPartResult(const TestPartResult& test_part_result) { - const std::string& result = - PrintTestPartResultToString(test_part_result); +static void PrintTestPartResult(const TestPartResult &test_part_result) { + const std::string &result = PrintTestPartResultToString(test_part_result);
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest.cc
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
} } namespace internal { namespace { enum class GTestColor { kDefault, kRed, kGreen, kYellow }; } // namespace // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
#endif default: return "Unknown result type"; } } namespace internal { // Prints a TestPartResult to an std::string. static std::string PrintTestPartResultToString(
+ show +
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), test_part_result.line_number()) << " " << TestPartResultTypeToString(test_part_result.type()) << test_part_result.message()).GetString(); } // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { const std::string& result = PrintTestPartResultToString(test_part_result);
+ show +
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
printf("%s\n", result.c_str()); fflush(stdout); // If the test program runs in Visual Studio or a debugger, the // following statements add the test part result message to the Output // window such that the user can double-click on it to jump to the // corresponding source code location; otherwise they do nothing. #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE // We don't call OutputDebugString*() on Windows Mobile, as printing // to stdout is done by OutputDebugString() there already - we don't // want the same message printed twice.

[CVE-2020-0470_1.diff] gtest.cc #126
-void UnitTest::AddTestPartResult( - TestPartResult::Type result_type, - const char* file_name, - int line_number, - const std::string& message, - const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) { +void UnitTest::AddTestPartResult(TestPartResult::Type result_type, + const char *file_name, int line_number, + const std::string &message, + const std::string &os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_) {
/media/esteban/ACOS/dotOS/external/googletest/googletest/src/gtest.cc
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
5281
5282
5283
5284
5285
5286
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (size_t i = impl_->gtest_trace_stack().size(); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4108
4109
4110
4111
4112
4113
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4716
4717
4718
4719
4720
4721
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
5556
5557
5558
5559
5560
5561
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4632
4633
4634
4635
4636
4637
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (int i = static_cast<int>(impl_->gtest_trace_stack().size()); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
} impl_->environments().push_back(env); return env; } // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly.
+ show +
4768
4769
4770
4771
4772
4773
void UnitTest::AddTestPartResult( TestPartResult::Type result_type, const char* file_name, int line_number, const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ show +
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
Message msg; msg << message; internal::MutexLock lock(&mutex_); if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; for (size_t i = impl_->gtest_trace_stack().size(); i > 0; --i) { const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)

[CVE-2020-0478_1.diff] gtest-typed-test.h #7
-// given test case. -# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ +// given test suite. +#define GTEST_TYPE_PARAMS_(TestSuiteName) gtest_type_params_##TestSuiteName##_ -// The 'Types' template argument below must have spaces around it -// since some compilers may choke on '>>' when passing a template -// instance (e.g. Types<int>) -# define TYPED_TEST_CASE(CaseName, Types) \ - typedef ::testing::internal::TypeList< Types >::type \ - GTEST_TYPE_PARAMS_(CaseName) +// Expands to the name of the typedef for the NameGenerator, responsible for +// creating the suffixes of the name. +#define GTEST_NAME_GENERATOR_(TestSuiteName) \ + gtest_type_params_##TestSuiteName##_NameGenerator -# define TYPED_TEST(CaseName, TestName) \ - template <typename gtest_TypeParam_> \ - class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ - : public CaseName<gtest_TypeParam_> { \ - private: \ - typedef CaseName<gtest_TypeParam_> TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTest< \ - CaseName, \ - ::testing::internal::TemplateSel< \ - GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ - GTEST_TYPE_PARAMS_(CaseName)>::Register(\ - "", ::testing::internal::CodeLocation(__FILE__, __LINE__), \ - #CaseName, #TestName, 0); \ - template <typename gtest_TypeParam_> \ - void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody() +#define TYPED_TEST_SUITE(CaseName, Types, ...) \ + typedef ::testing::internal::GenerateTypeList<Types>::type \ + GTEST_TYPE_PARAMS_(CaseName); \ + typedef ::testing::internal::NameGeneratorSelector<__VA_ARGS__>::type \ + GTEST_NAME_GENERATOR_(CaseName) + +#define TYPED_TEST(CaseName, TestName) \ + static_assert(sizeof(GTEST_STRINGIFY_(TestName)) > 1, \ + "test-name must not be empty"); \ + template <typename gtest_TypeParam_> \ + class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ + : public CaseName<gtest_TypeParam_> { \ + private: \ + typedef CaseName<gtest_TypeParam_> TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + void TestBody() override; \ + }; \ + static bool gtest_##CaseName##_##TestName##_registered_ \ + GTEST_ATTRIBUTE_UNUSED_ = ::testing::internal::TypeParameterizedTest< \ + CaseName, \ + ::testing::internal::TemplateSel<GTEST_TEST_CLASS_NAME_(CaseName, \ + TestName)>, \ + GTEST_TYPE_PARAMS_( \ + CaseName)>::Register("", \ + ::testing::internal::CodeLocation( \ + __FILE__, __LINE__), \ + GTEST_STRINGIFY_(CaseName), \ + GTEST_STRINGIFY_(TestName), 0, \ + ::testing::internal::GenerateNames< \ + GTEST_NAME_GENERATOR_(CaseName), \ + GTEST_TYPE_PARAMS_(CaseName)>()); \ + template <typename gtest_TypeParam_> \ + void GTEST_TEST_CLASS_NAME_(CaseName, \ + TestName)<gtest_TypeParam_>::TestBody() + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define TYPED_TEST_CASE \ + static_assert(::testing::internal::TypedTestCaseIsDeprecated(), ""); \ + TYPED_TEST_SUITE +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-typed-test.h
150
151
152
153
154
155
156
157
158
159
#include "gtest/internal/gtest-type-util.h" // Implements typed tests. #if GTEST_HAS_TYPED_TEST // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the typedef for the type parameters of the // given test case.
+ show +
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) # define TYPED_TEST_CASE(CaseName, Types) \ typedef ::testing::internal::TypeList< Types >::type \ GTEST_TYPE_PARAMS_(CaseName) # define TYPED_TEST(CaseName, TestName) \ template <typename gtest_TypeParam_> \ class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ : public CaseName<gtest_TypeParam_> { \ private: \ typedef CaseName<gtest_TypeParam_> TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTest< \ CaseName, \ ::testing::internal::TemplateSel< \ GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ GTEST_TYPE_PARAMS_(CaseName)>::Register(\ "", ::testing::internal::CodeLocation(__FILE__, __LINE__), \ #CaseName, #TestName, 0); \ template <typename gtest_TypeParam_> \ void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
+ show +
188
189
190
191
192
193
194
195
196
197
#endif // GTEST_HAS_TYPED_TEST // Implements type-parameterized tests. #if GTEST_HAS_TYPED_TEST_P // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the namespace name that the type-parameterized tests for
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
// Implements typed tests. #if GTEST_HAS_TYPED_TEST // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the typedef for the type parameters of the // given test case.
+ show +
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
18580
18581
18582
18583
18584
18585
18586
18587
18588
18589
# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) # define TYPED_TEST_CASE(CaseName, Types) \ typedef ::testing::internal::TypeList< Types >::type \ GTEST_TYPE_PARAMS_(CaseName) # define TYPED_TEST(CaseName, TestName) \ template <typename gtest_TypeParam_> \ class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ : public CaseName<gtest_TypeParam_> { \ private: \ typedef CaseName<gtest_TypeParam_> TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTest< \ CaseName, \ ::testing::internal::TemplateSel< \ GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ GTEST_TYPE_PARAMS_(CaseName)>::Register(\ "", ::testing::internal::CodeLocation(__FILE__, __LINE__), \ #CaseName, #TestName, 0); \ template <typename gtest_TypeParam_> \ void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
+ show +
18590
18591
18592
18593
18594
18595
18596
18597
18598
18599
#endif // GTEST_HAS_TYPED_TEST // Implements type-parameterized tests. #if GTEST_HAS_TYPED_TEST_P // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the namespace name that the type-parameterized tests for

[CVE-2020-0478_1.diff] gtest-typed-test.h #8
-// the given type-parameterized test case are defined in. The exact +// the given type-parameterized test suite are defined in. The exact -# define GTEST_CASE_NAMESPACE_(TestCaseName) \ - gtest_case_##TestCaseName##_ +#define GTEST_SUITE_NAMESPACE_(TestSuiteName) gtest_suite_##TestSuiteName##_ -// the defined tests in the given test case. -# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ - gtest_typed_test_case_p_state_##TestCaseName##_ +// the defined tests in the given test suite. +#define GTEST_TYPED_TEST_SUITE_P_STATE_(TestSuiteName) \ + gtest_typed_test_suite_p_state_##TestSuiteName##_ -// the registered tests in the given test case. -# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ - gtest_registered_test_names_##TestCaseName##_ +// the registered tests in the given test suite. +#define GTEST_REGISTERED_TEST_NAMES_(TestSuiteName) \ + gtest_registered_test_names_##TestSuiteName##_ -# define TYPED_TEST_CASE_P(CaseName) \ - static ::testing::internal::TypedTestCasePState \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) +#define TYPED_TEST_SUITE_P(SuiteName) \ + static ::testing::internal::TypedTestSuitePState \ + GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName) -# define TYPED_TEST_P(CaseName, TestName) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - template <typename gtest_TypeParam_> \ - class TestName : public CaseName<gtest_TypeParam_> { \ - private: \ - typedef CaseName<gtest_TypeParam_> TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ - __FILE__, __LINE__, #CaseName, #TestName); \ - } \ - template <typename gtest_TypeParam_> \ - void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody() +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define TYPED_TEST_CASE_P \ + static_assert(::testing::internal::TypedTestCase_P_IsDeprecated(), ""); \ + TYPED_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ -# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ - } \ - static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ - __FILE__, __LINE__, #__VA_ARGS__) +#define TYPED_TEST_P(SuiteName, TestName) \ + namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \ + template <typename gtest_TypeParam_> \ + class TestName : public SuiteName<gtest_TypeParam_> { \ + private: \ + typedef SuiteName<gtest_TypeParam_> TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + void TestBody() override; \ + }; \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).AddTestName( \ + __FILE__, __LINE__, GTEST_STRINGIFY_(SuiteName), \ + GTEST_STRINGIFY_(TestName)); \ + } \ + template <typename gtest_TypeParam_> \ + void GTEST_SUITE_NAMESPACE_( \ + SuiteName)::TestName<gtest_TypeParam_>::TestBody() -// The 'Types' template argument below must have spaces around it -// since some compilers may choke on '>>' when passing a template -// instance (e.g. Types<int>) -# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ - bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTestCase<CaseName, \ - GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \ - ::testing::internal::TypeList< Types >::type>::Register(\ - #Prefix, \ - ::testing::internal::CodeLocation(__FILE__, __LINE__), \ - >EST_TYPED_TEST_CASE_P_STATE_(CaseName), \ - #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) +// Note: this won't work correctly if the trailing arguments are macros. +#define REGISTER_TYPED_TEST_SUITE_P(SuiteName, ...) \ + namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \ + typedef ::testing::internal::Templates<__VA_ARGS__> gtest_AllTests_; \ + } \ + static const char *const GTEST_REGISTERED_TEST_NAMES_( \ + SuiteName) GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).VerifyRegisteredTestNames( \ + GTEST_STRINGIFY_(SuiteName), __FILE__, __LINE__, #__VA_ARGS__) + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define REGISTER_TYPED_TEST_CASE_P \ + static_assert(::testing::internal::RegisterTypedTestCase_P_IsDeprecated(), \ + ""); \ + REGISTER_TYPED_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + +#define INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, SuiteName, Types, ...) \ + static_assert(sizeof(GTEST_STRINGIFY_(Prefix)) > 1, \ + "test-suit-prefix must not be empty"); \ + static bool gtest_##Prefix##_##SuiteName GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTestSuite< \ + SuiteName, GTEST_SUITE_NAMESPACE_(SuiteName)::gtest_AllTests_, \ + ::testing::internal::GenerateTypeList<Types>::type>:: \ + Register(GTEST_STRINGIFY_(Prefix), \ + ::testing::internal::CodeLocation(__FILE__, __LINE__), \ + >EST_TYPED_TEST_SUITE_P_STATE_(SuiteName), \ + GTEST_STRINGIFY_(SuiteName), \ + GTEST_REGISTERED_TEST_NAMES_(SuiteName), \ + ::testing::internal::GenerateNames< \ + ::testing::internal::NameGeneratorSelector< \ + __VA_ARGS__>::type, \ + ::testing::internal::GenerateTypeList<Types>::type>()) + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define INSTANTIATE_TYPED_TEST_CASE_P \ + static_assert( \ + ::testing::internal::InstantiateTypedTestCase_P_IsDeprecated(), ""); \ + INSTANTIATE_TYPED_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
18592
18593
18594
18595
18596
18597
18598
18599
18600
18601
// Implements type-parameterized tests. #if GTEST_HAS_TYPED_TEST_P // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the namespace name that the type-parameterized tests for // the given type-parameterized test case are defined in. The exact // name of the namespace is subject to change without notice.
+ show +
18602
18603
18604
18605
18606
18607
18608
18609
18610
18611
18612
18613
18614
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
18633
18634
18635
18636
18637
18638
18639
18640
18641
18642
18643
18644
18645
18646
18647
18648
18649
18650
18651
18652
18653
18654
18655
18656
18657
18658
18659
18660
18661
# define GTEST_CASE_NAMESPACE_(TestCaseName) \ gtest_case_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the variable used to remember the names of // the defined tests in the given test case. # define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ gtest_typed_test_case_p_state_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. // // Expands to the name of the variable used to remember the names of // the registered tests in the given test case. # define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ gtest_registered_test_names_##TestCaseName##_ // The variables defined in the type-parameterized test macros are // static as typically these macros are used in a .h file that can be // #included in multiple translation units linked together. # define TYPED_TEST_CASE_P(CaseName) \ static ::testing::internal::TypedTestCasePState \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) # define TYPED_TEST_P(CaseName, TestName) \ namespace GTEST_CASE_NAMESPACE_(CaseName) { \ template <typename gtest_TypeParam_> \ class TestName : public CaseName<gtest_TypeParam_> { \ private: \ typedef CaseName<gtest_TypeParam_> TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ __FILE__, __LINE__, #CaseName, #TestName); \ } \ template <typename gtest_TypeParam_> \ void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody() # define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ namespace GTEST_CASE_NAMESPACE_(CaseName) { \ typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ } \ static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ __FILE__, __LINE__, #__VA_ARGS__) // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) # define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTestCase<CaseName, \ GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \ ::testing::internal::TypeList< Types >::type>::Register(\ #Prefix, \ ::testing::internal::CodeLocation(__FILE__, __LINE__), \ &GTEST_TYPED_TEST_CASE_P_STATE_(CaseName), \ #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))
+ show +
18662
18663
18664
18665
18666
18667
18668
18669
18670
18671
#endif // GTEST_HAS_TYPED_TEST_P #endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ // Depending on the platform, different string classes are available. // On Linux, in addition to ::std::string, Google also makes use of // class ::string, which has the same interface as ::std::string, but // has a different implementation. //

[CVE-2020-0470_1.diff] gtest-typed-test.h #7
-// given test case. -# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ +// given test suite. +#define GTEST_TYPE_PARAMS_(TestSuiteName) gtest_type_params_##TestSuiteName##_ -// The 'Types' template argument below must have spaces around it -// since some compilers may choke on '>>' when passing a template -// instance (e.g. Types<int>) -# define TYPED_TEST_CASE(CaseName, Types) \ - typedef ::testing::internal::TypeList< Types >::type \ - GTEST_TYPE_PARAMS_(CaseName) +// Expands to the name of the typedef for the NameGenerator, responsible for +// creating the suffixes of the name. +#define GTEST_NAME_GENERATOR_(TestSuiteName) \ + gtest_type_params_##TestSuiteName##_NameGenerator -# define TYPED_TEST(CaseName, TestName) \ - template <typename gtest_TypeParam_> \ - class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ - : public CaseName<gtest_TypeParam_> { \ - private: \ - typedef CaseName<gtest_TypeParam_> TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTest< \ - CaseName, \ - ::testing::internal::TemplateSel< \ - GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ - GTEST_TYPE_PARAMS_(CaseName)>::Register(\ - "", ::testing::internal::CodeLocation(__FILE__, __LINE__), \ - #CaseName, #TestName, 0); \ - template <typename gtest_TypeParam_> \ - void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody() +#define TYPED_TEST_SUITE(CaseName, Types, ...) \ + typedef ::testing::internal::GenerateTypeList<Types>::type \ + GTEST_TYPE_PARAMS_(CaseName); \ + typedef ::testing::internal::NameGeneratorSelector<__VA_ARGS__>::type \ + GTEST_NAME_GENERATOR_(CaseName) + +#define TYPED_TEST(CaseName, TestName) \ + static_assert(sizeof(GTEST_STRINGIFY_(TestName)) > 1, \ + "test-name must not be empty"); \ + template <typename gtest_TypeParam_> \ + class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ + : public CaseName<gtest_TypeParam_> { \ + private: \ + typedef CaseName<gtest_TypeParam_> TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + void TestBody() override; \ + }; \ + static bool gtest_##CaseName##_##TestName##_registered_ \ + GTEST_ATTRIBUTE_UNUSED_ = ::testing::internal::TypeParameterizedTest< \ + CaseName, \ + ::testing::internal::TemplateSel<GTEST_TEST_CLASS_NAME_(CaseName, \ + TestName)>, \ + GTEST_TYPE_PARAMS_( \ + CaseName)>::Register("", \ + ::testing::internal::CodeLocation( \ + __FILE__, __LINE__), \ + GTEST_STRINGIFY_(CaseName), \ + GTEST_STRINGIFY_(TestName), 0, \ + ::testing::internal::GenerateNames< \ + GTEST_NAME_GENERATOR_(CaseName), \ + GTEST_TYPE_PARAMS_(CaseName)>()); \ + template <typename gtest_TypeParam_> \ + void GTEST_TEST_CLASS_NAME_(CaseName, \ + TestName)<gtest_TypeParam_>::TestBody() + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define TYPED_TEST_CASE \ + static_assert(::testing::internal::TypedTestCaseIsDeprecated(), ""); \ + TYPED_TEST_SUITE +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-typed-test.h
150
151
152
153
154
155
156
157
158
159
#include "gtest/internal/gtest-type-util.h" // Implements typed tests. #if GTEST_HAS_TYPED_TEST // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the typedef for the type parameters of the // given test case.
+ show +
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) # define TYPED_TEST_CASE(CaseName, Types) \ typedef ::testing::internal::TypeList< Types >::type \ GTEST_TYPE_PARAMS_(CaseName) # define TYPED_TEST(CaseName, TestName) \ template <typename gtest_TypeParam_> \ class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ : public CaseName<gtest_TypeParam_> { \ private: \ typedef CaseName<gtest_TypeParam_> TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTest< \ CaseName, \ ::testing::internal::TemplateSel< \ GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ GTEST_TYPE_PARAMS_(CaseName)>::Register(\ "", ::testing::internal::CodeLocation(__FILE__, __LINE__), \ #CaseName, #TestName, 0); \ template <typename gtest_TypeParam_> \ void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
+ show +
188
189
190
191
192
193
194
195
196
197
#endif // GTEST_HAS_TYPED_TEST // Implements type-parameterized tests. #if GTEST_HAS_TYPED_TEST_P // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the namespace name that the type-parameterized tests for
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
// Implements typed tests. #if GTEST_HAS_TYPED_TEST // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the typedef for the type parameters of the // given test case.
+ show +
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
18580
18581
18582
18583
18584
18585
18586
18587
18588
18589
# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) # define TYPED_TEST_CASE(CaseName, Types) \ typedef ::testing::internal::TypeList< Types >::type \ GTEST_TYPE_PARAMS_(CaseName) # define TYPED_TEST(CaseName, TestName) \ template <typename gtest_TypeParam_> \ class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ : public CaseName<gtest_TypeParam_> { \ private: \ typedef CaseName<gtest_TypeParam_> TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTest< \ CaseName, \ ::testing::internal::TemplateSel< \ GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ GTEST_TYPE_PARAMS_(CaseName)>::Register(\ "", ::testing::internal::CodeLocation(__FILE__, __LINE__), \ #CaseName, #TestName, 0); \ template <typename gtest_TypeParam_> \ void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
+ show +
18590
18591
18592
18593
18594
18595
18596
18597
18598
18599
#endif // GTEST_HAS_TYPED_TEST // Implements type-parameterized tests. #if GTEST_HAS_TYPED_TEST_P // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the namespace name that the type-parameterized tests for

[CVE-2020-0470_1.diff] gtest-typed-test.h #8
-// the given type-parameterized test case are defined in. The exact +// the given type-parameterized test suite are defined in. The exact -# define GTEST_CASE_NAMESPACE_(TestCaseName) \ - gtest_case_##TestCaseName##_ +#define GTEST_SUITE_NAMESPACE_(TestSuiteName) gtest_suite_##TestSuiteName##_ -// the defined tests in the given test case. -# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ - gtest_typed_test_case_p_state_##TestCaseName##_ +// the defined tests in the given test suite. +#define GTEST_TYPED_TEST_SUITE_P_STATE_(TestSuiteName) \ + gtest_typed_test_suite_p_state_##TestSuiteName##_ -// the registered tests in the given test case. -# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ - gtest_registered_test_names_##TestCaseName##_ +// the registered tests in the given test suite. +#define GTEST_REGISTERED_TEST_NAMES_(TestSuiteName) \ + gtest_registered_test_names_##TestSuiteName##_ -# define TYPED_TEST_CASE_P(CaseName) \ - static ::testing::internal::TypedTestCasePState \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) +#define TYPED_TEST_SUITE_P(SuiteName) \ + static ::testing::internal::TypedTestSuitePState \ + GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName) -# define TYPED_TEST_P(CaseName, TestName) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - template <typename gtest_TypeParam_> \ - class TestName : public CaseName<gtest_TypeParam_> { \ - private: \ - typedef CaseName<gtest_TypeParam_> TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ - __FILE__, __LINE__, #CaseName, #TestName); \ - } \ - template <typename gtest_TypeParam_> \ - void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody() +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define TYPED_TEST_CASE_P \ + static_assert(::testing::internal::TypedTestCase_P_IsDeprecated(), ""); \ + TYPED_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ -# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ - } \ - static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ - __FILE__, __LINE__, #__VA_ARGS__) +#define TYPED_TEST_P(SuiteName, TestName) \ + namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \ + template <typename gtest_TypeParam_> \ + class TestName : public SuiteName<gtest_TypeParam_> { \ + private: \ + typedef SuiteName<gtest_TypeParam_> TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + void TestBody() override; \ + }; \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).AddTestName( \ + __FILE__, __LINE__, GTEST_STRINGIFY_(SuiteName), \ + GTEST_STRINGIFY_(TestName)); \ + } \ + template <typename gtest_TypeParam_> \ + void GTEST_SUITE_NAMESPACE_( \ + SuiteName)::TestName<gtest_TypeParam_>::TestBody() -// The 'Types' template argument below must have spaces around it -// since some compilers may choke on '>>' when passing a template -// instance (e.g. Types<int>) -# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ - bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTestCase<CaseName, \ - GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \ - ::testing::internal::TypeList< Types >::type>::Register(\ - #Prefix, \ - ::testing::internal::CodeLocation(__FILE__, __LINE__), \ - >EST_TYPED_TEST_CASE_P_STATE_(CaseName), \ - #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) +// Note: this won't work correctly if the trailing arguments are macros. +#define REGISTER_TYPED_TEST_SUITE_P(SuiteName, ...) \ + namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \ + typedef ::testing::internal::Templates<__VA_ARGS__> gtest_AllTests_; \ + } \ + static const char *const GTEST_REGISTERED_TEST_NAMES_( \ + SuiteName) GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).VerifyRegisteredTestNames( \ + GTEST_STRINGIFY_(SuiteName), __FILE__, __LINE__, #__VA_ARGS__) + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define REGISTER_TYPED_TEST_CASE_P \ + static_assert(::testing::internal::RegisterTypedTestCase_P_IsDeprecated(), \ + ""); \ + REGISTER_TYPED_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + +#define INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, SuiteName, Types, ...) \ + static_assert(sizeof(GTEST_STRINGIFY_(Prefix)) > 1, \ + "test-suit-prefix must not be empty"); \ + static bool gtest_##Prefix##_##SuiteName GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTestSuite< \ + SuiteName, GTEST_SUITE_NAMESPACE_(SuiteName)::gtest_AllTests_, \ + ::testing::internal::GenerateTypeList<Types>::type>:: \ + Register(GTEST_STRINGIFY_(Prefix), \ + ::testing::internal::CodeLocation(__FILE__, __LINE__), \ + >EST_TYPED_TEST_SUITE_P_STATE_(SuiteName), \ + GTEST_STRINGIFY_(SuiteName), \ + GTEST_REGISTERED_TEST_NAMES_(SuiteName), \ + ::testing::internal::GenerateNames< \ + ::testing::internal::NameGeneratorSelector< \ + __VA_ARGS__>::type, \ + ::testing::internal::GenerateTypeList<Types>::type>()) + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define INSTANTIATE_TYPED_TEST_CASE_P \ + static_assert( \ + ::testing::internal::InstantiateTypedTestCase_P_IsDeprecated(), ""); \ + INSTANTIATE_TYPED_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
18592
18593
18594
18595
18596
18597
18598
18599
18600
18601
// Implements type-parameterized tests. #if GTEST_HAS_TYPED_TEST_P // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the namespace name that the type-parameterized tests for // the given type-parameterized test case are defined in. The exact // name of the namespace is subject to change without notice.
+ show +
18602
18603
18604
18605
18606
18607
18608
18609
18610
18611
18612
18613
18614
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
18633
18634
18635
18636
18637
18638
18639
18640
18641
18642
18643
18644
18645
18646
18647
18648
18649
18650
18651
18652
18653
18654
18655
18656
18657
18658
18659
18660
18661
# define GTEST_CASE_NAMESPACE_(TestCaseName) \ gtest_case_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the variable used to remember the names of // the defined tests in the given test case. # define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ gtest_typed_test_case_p_state_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. // // Expands to the name of the variable used to remember the names of // the registered tests in the given test case. # define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ gtest_registered_test_names_##TestCaseName##_ // The variables defined in the type-parameterized test macros are // static as typically these macros are used in a .h file that can be // #included in multiple translation units linked together. # define TYPED_TEST_CASE_P(CaseName) \ static ::testing::internal::TypedTestCasePState \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) # define TYPED_TEST_P(CaseName, TestName) \ namespace GTEST_CASE_NAMESPACE_(CaseName) { \ template <typename gtest_TypeParam_> \ class TestName : public CaseName<gtest_TypeParam_> { \ private: \ typedef CaseName<gtest_TypeParam_> TestFixture; \ typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ __FILE__, __LINE__, #CaseName, #TestName); \ } \ template <typename gtest_TypeParam_> \ void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody() # define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ namespace GTEST_CASE_NAMESPACE_(CaseName) { \ typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ } \ static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ __FILE__, __LINE__, #__VA_ARGS__) // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) # define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTestCase<CaseName, \ GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \ ::testing::internal::TypeList< Types >::type>::Register(\ #Prefix, \ ::testing::internal::CodeLocation(__FILE__, __LINE__), \ &GTEST_TYPED_TEST_CASE_P_STATE_(CaseName), \ #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))
+ show +
18662
18663
18664
18665
18666
18667
18668
18669
18670
18671
#endif // GTEST_HAS_TYPED_TEST_P #endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ // Depending on the platform, different string classes are available. // On Linux, in addition to ::std::string, Google also makes use of // class ::string, which has the same interface as ::std::string, but // has a different implementation. //

[CVE-2020-0478_1.diff] gtest-param-test.h #13
-// For example, this instantiates tests from test case BarTest each +// For example, this instantiates tests from test suite BarTest each -// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); +// INSTANTIATE_TEST_SUITE_P(NumSequence, +// BarTest, +// Values("one", "two", "three")); -// This instantiates tests from test case BazTest each with values 1, 2, 3.5. +// This instantiates tests from test suite BazTest each with values 1, 2, 3.5. -// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); +// INSTANTIATE_TEST_SUITE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); -// Currently, Values() supports from 1 to 50 parameters. -template <typename T1> -internal::ValueArray1<T1> Values(T1 v1) { - return internal::ValueArray1<T1>(v1); -} - -template <typename T1, typename T2> -internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { - return internal::ValueArray2<T1, T2>(v1, v2); -} - -template <typename T1, typename T2, typename T3> -internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { - return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); -} - -template <typename T1, typename T2, typename T3, typename T4> -internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { - return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5> -internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5) { - return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6> -internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6) { - return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7> -internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7) { - return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, - v6, v7); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8> -internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { - return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, - v5, v6, v7, v8); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9> -internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { - return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, - v4, v5, v6, v7, v8, v9); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10> -internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { - return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11> -internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, - T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11) { - return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, - T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12> -internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12) { - return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13> -internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, - T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13) { - return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14> -internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { - return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15> -internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { - return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16> -internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16) { - return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17> -internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17) { - return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18> -internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18) { - return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19> -internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { - return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20> -internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { - return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21> -internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { - return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22> -internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22) { - return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23> -internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23) { - return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24> -internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24) { - return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25> -internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { - return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26> -internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26) { - return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27> -internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, - T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27) { - return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28> -internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, - T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28) { - return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29> -internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29) { - return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30> -internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { - return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31> -internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { - return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32> -internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32) { - return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33> -internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33) { - return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34> -internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34) { - return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35> -internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { - return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36> -internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { - return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37> -internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37) { - return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38> -internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38) { - return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, - v33, v34, v35, v36, v37, v38); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39> -internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38, T39 v39) { - return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, - v32, v33, v34, v35, v36, v37, v38, v39); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40> -internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, - T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, - T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { - return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, - v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41> -internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, - T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { - return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, - v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42> -internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, - T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42) { - return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, - v42); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43> -internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, - T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43) { - return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, - v41, v42, v43); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44> -internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44) { - return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, - v40, v41, v42, v43, v44); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45> -internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, - T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, - T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { - return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, - v39, v40, v41, v42, v43, v44, v45); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46> -internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { - return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47> -internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { - return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47, typename T48> -internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, - T48 v48) { - return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, - v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47, typename T48, typename T49> -internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, - T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, - T47 v47, T48 v48, T49 v49) { - return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, - v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47, typename T48, typename T49, typename T50> -internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, - T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, - T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { - return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, - v48, v49, v50); +template <typename... T> +internal::ValueArray<T...> Values(T... v) { + return internal::ValueArray<T...>(std::move(v)...);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
// // INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); // // This instantiates tests from test case BazTest each with values 1, 2, 3.5. // The exact type of values will depend on the type of parameter in BazTest. // // INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); // // Currently, Values() supports from 1 to 50 parameters. //
+ show +
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310
17311
17312
17313
17314
17315
17316
17317
17318
17319
17320
17321
17322
17323
17324
17325
17326
17327
17328
17329
17330
17331
17332
17333
17334
17335
17336
17337
17338
17339
17340
17341
17342
17343
17344
17345
17346
17347
17348
17349
17350
17351
17352
17353
17354
17355
17356
17357
17358
17359
17360
17361
17362
17363
17364
17365
17366
17367
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387
17388
17389
17390
17391
17392
17393
17394
17395
17396
17397
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408
17409
17410
17411
17412
17413
17414
17415
17416
17417
17418
17419
17420
17421
17422
17423
17424
17425
17426
17427
17428
17429
17430
17431
17432
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
17448
17449
17450
17451
17452
17453
17454
17455
17456
17457
17458
17459
17460
17461
17462
17463
17464
17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
17480
17481
17482
17483
17484
17485
17486
17487
17488
17489
17490
17491
17492
17493
17494
17495
17496
17497
17498
17499
17500
17501
17502
17503
17504
17505
17506
17507
17508
17509
17510
17511
17512
17513
17514
17515
17516
17517
17518
17519
17520
17521
17522
17523
17524
17525
17526
17527
17528
17529
17530
17531
17532
17533
17534
17535
17536
17537
17538
17539
17540
17541
17542
17543
17544
17545
17546
17547
17548
17549
17550
17551
17552
17553
17554
17555
17556
17557
17558
17559
17560
17561
17562
17563
17564
17565
17566
17567
17568
17569
17570
17571
17572
17573
17574
17575
17576
17577
17578
17579
17580
17581
17582
17583
17584
17585
17586
17587
17588
17589
17590
17591
17592
17593
17594
17595
17596
17597
17598
17599
17600
17601
17602
17603
17604
17605
17606
17607
17608
17609
17610
17611
17612
17613
17614
17615
17616
17617
17618
17619
17620
17621
17622
17623
17624
17625
17626
17627
17628
17629
17630
17631
17632
17633
17634
17635
17636
17637
17638
17639
17640
17641
17642
17643
17644
17645
17646
17647
17648
17649
17650
17651
17652
17653
17654
17655
17656
17657
17658
17659
17660
17661
17662
17663
17664
17665
17666
17667
17668
17669
17670
17671
17672
17673
17674
17675
17676
17677
17678
17679
17680
17681
17682
17683
17684
17685
17686
17687
17688
17689
17690
17691
17692
17693
17694
17695
17696
17697
17698
17699
17700
17701
17702
17703
17704
17705
17706
17707
17708
17709
17710
17711
17712
17713
17714
17715
17716
17717
17718
17719
17720
17721
17722
17723
17724
17725
17726
17727
17728
17729
17730
17731
17732
17733
17734
17735
17736
17737
17738
17739
17740
17741
17742
17743
17744
17745
17746
17747
17748
17749
17750
17751
17752
17753
17754
17755
17756
17757
17758
17759
17760
17761
17762
17763
17764
17765
17766
17767
17768
17769
17770
17771
17772
17773
17774
17775
17776
17777
17778
17779
17780
17781
17782
17783
17784
17785
17786
17787
17788
17789
17790
17791
17792
17793
17794
17795
17796
17797
17798
17799
17800
17801
17802
17803
17804
17805
17806
17807
17808
17809
17810
17811
17812
17813
17814
17815
17816
17817
17818
17819
17820
17821
17822
17823
17824
17825
17826
17827
17828
17829
17830
17831
17832
17833
17834
17835
17836
17837
17838
17839
17840
17841
17842
17843
17844
17845
17846
17847
17848
17849
17850
17851
17852
17853
17854
17855
17856
17857
17858
17859
17860
17861
17862
17863
17864
17865
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
17912
17913
17914
17915
17916
17917
17918
17919
17920
17921
17922
template <typename T1> internal::ValueArray1<T1> Values(T1 v1) { return internal::ValueArray1<T1>(v1); } template <typename T1, typename T2> internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { return internal::ValueArray2<T1, T2>(v1, v2); } template <typename T1, typename T2, typename T3> internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); } template <typename T1, typename T2, typename T3, typename T4> internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); } template <typename T1, typename T2, typename T3, typename T4, typename T5> internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) { return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) { return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, v6, v7); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, v5, v6, v7, v8); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, v4, v5, v6, v7, v8, v9); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11) { return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12) { return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13> internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13) { return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14> internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15> internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16> internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) { return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17> internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17) { return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18> internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18) { return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19> internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20> internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21> internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22> internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) { return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23> internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) { return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24> internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) { return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25> internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26> internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26) { return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27> internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27) { return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28> internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28) { return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29> internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29) { return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30> internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31> internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32> internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) { return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33> internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33) { return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34> internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34) { return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35> internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36> internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37> internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37) { return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38> internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) { return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39> internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) { return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40> internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41> internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42> internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42) { return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43> internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43) { return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44> internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44) { return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45> internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46> internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47> internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48> internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) { return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49> internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49) { return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49, typename T50> internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50);
+ show +
17923
17924
17925
17926
17927
17928
17929
17930
17931
17932
} // Bool() allows generating tests with parameters in a set of (false, true). // // Synopsis: // Bool() // - returns a generator producing sequences with elements {false, true}. // // It is useful when testing code that depends on Boolean flags. Combinations // of multiple flags can be tested when several Bool()'s are combined using
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
// // INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); // // This instantiates tests from test case BazTest each with values 1, 2, 3.5. // The exact type of values will depend on the type of parameter in BazTest. // // INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); // // Currently, Values() supports from 1 to 50 parameters. //
+ show +
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
16703
16704
16705
16706
16707
16708
16709
16710
16711
16712
16713
16714
16715
16716
16717
16718
16719
16720
16721
16722
16723
16724
16725
16726
16727
16728
16729
16730
16731
16732
16733
16734
16735
16736
16737
16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
16752
16753
16754
16755
16756
16757
16758
16759
16760
16761
16762
16763
16764
16765
16766
16767
template <typename T1> internal::ValueArray1<T1> Values(T1 v1) { return internal::ValueArray1<T1>(v1); } template <typename T1, typename T2> internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { return internal::ValueArray2<T1, T2>(v1, v2); } template <typename T1, typename T2, typename T3> internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); } template <typename T1, typename T2, typename T3, typename T4> internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); } template <typename T1, typename T2, typename T3, typename T4, typename T5> internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) { return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) { return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, v6, v7); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, v5, v6, v7, v8); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, v4, v5, v6, v7, v8, v9); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11) { return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12) { return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13> internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13) { return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14> internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15> internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16> internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) { return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17> internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17) { return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18> internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18) { return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19> internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20> internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21> internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22> internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) { return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23> internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) { return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24> internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) { return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25> internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26> internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26) { return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27> internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27) { return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28> internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28) { return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29> internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29) { return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30> internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31> internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32> internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) { return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33> internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33) { return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34> internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34) { return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35> internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36> internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37> internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37) { return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38> internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) { return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39> internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) { return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40> internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41> internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42> internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42) { return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43> internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43) { return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44> internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44) { return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45> internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46> internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47> internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48> internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) { return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49> internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49) { return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49, typename T50> internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50);
+ show +
16768
16769
16770
16771
16772
16773
16774
16775
16776
16777
} // Bool() allows generating tests with parameters in a set of (false, true). // // Synopsis: // Bool() // - returns a generator producing sequences with elements {false, true}. // // It is useful when testing code that depends on Boolean flags. Combinations // of multiple flags can be tested when several Bool()'s are combined using

[CVE-2020-0478_1.diff] gtest-param-test.h #16
-// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types +// std::tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types -// Combine can have up to 10 arguments. This number is currently limited -// by the maximum number of elements in the tuple implementation used by Google -// Test. +// Combine can have up to 10 arguments. -// This will instantiate tests in test case AnimalTest each one with +// This will instantiate tests in test suite AnimalTest each one with -// : public testing::TestWithParam<tuple<const char*, Color> > {...}; +// : public testing::TestWithParam<std::tuple<const char*, Color> > {...}; -// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, -// Combine(Values("cat", "dog"), -// Values(BLACK, WHITE))); +// INSTANTIATE_TEST_SUITE_P(AnimalVariations, AnimalTest, +// Combine(Values("cat", "dog"), +// Values(BLACK, WHITE))); -// : public testing::TestWithParam<tuple<bool, bool> > { +// : public testing::TestWithParam<std::tuple<bool, bool> > { -// tie(external_flag_1, external_flag_2) = GetParam(); +// std::tie(external_flag_1, external_flag_2) = GetParam(); -// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, -// Combine(Bool(), Bool())); +// INSTANTIATE_TEST_SUITE_P(TwoBoolSequence, FlagDependentTest, +// Combine(Bool(), Bool())); -template <typename Generator1, typename Generator2> -internal::CartesianProductHolder2<Generator1, Generator2> Combine( - const Generator1& g1, const Generator2& g2) { - return internal::CartesianProductHolder2<Generator1, Generator2>( - g1, g2); +template <typename... Generator> +internal::CartesianProductHolder<Generator...> Combine(const Generator &... g) { + return internal::CartesianProductHolder<Generator...>(g...); -template <typename Generator1, typename Generator2, typename Generator3> -internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3) { - return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( - g1, g2, g3); -} +#define TEST_P(test_suite_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \ + : public test_suite_name { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \ + void TestBody() override; \ + \ + private: \ + static int AddToRegistry() { \ + ::testing::UnitTest::GetInstance() \ + ->parameterized_test_registry() \ + .GetTestSuitePatternHolder<test_suite_name>( \ + GTEST_STRINGIFY_(test_suite_name), \ + ::testing::internal::CodeLocation(__FILE__, __LINE__)) \ + ->AddTestPattern( \ + GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name), \ + new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \ + test_suite_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \ + test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_suite_name, \ + test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \ + void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody() -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4> -internal::CartesianProductHolder4<Generator1, Generator2, Generator3, - Generator4> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4) { - return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, - Generator4>( - g1, g2, g3, g4); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5> -internal::CartesianProductHolder5<Generator1, Generator2, Generator3, - Generator4, Generator5> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5) { - return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, - Generator4, Generator5>( - g1, g2, g3, g4, g5); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6> -internal::CartesianProductHolder6<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6) { - return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6>( - g1, g2, g3, g4, g5, g6); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7> -internal::CartesianProductHolder7<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7) { - return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7>( - g1, g2, g3, g4, g5, g6, g7); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8> -internal::CartesianProductHolder8<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8) { - return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8>( - g1, g2, g3, g4, g5, g6, g7, g8); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8, typename Generator9> -internal::CartesianProductHolder9<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, - Generator9> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9) { - return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( - g1, g2, g3, g4, g5, g6, g7, g8, g9); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8, typename Generator9, - typename Generator10> -internal::CartesianProductHolder10<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, - Generator10> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9, - const Generator10& g10) { - return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, - Generator10>( - g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); -} -# endif // GTEST_HAS_COMBINE - - - -# define TEST_P(test_case_name, test_name) \ - class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ - : public test_case_name { \ - public: \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ - virtual void TestBody(); \ - private: \ - static int AddToRegistry() { \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder<test_case_name>(\ - #test_case_name, \ - ::testing::internal::CodeLocation(\ - __FILE__, __LINE__))->AddTestPattern(\ - #test_case_name, \ - #test_name, \ - new ::testing::internal::TestMetaFactory< \ - GTEST_TEST_CLASS_NAME_(\ - test_case_name, test_name)>()); \ - return 0; \ - } \ - static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ - GTEST_DISALLOW_COPY_AND_ASSIGN_(\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ - }; \ - int GTEST_TEST_CLASS_NAME_(test_case_name, \ - test_name)::gtest_registering_dummy_ = \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ - void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() - -// The optional last argument to INSTANTIATE_TEST_CASE_P allows the user -// to specify a function or functor that generates custom test name suffixes -// based on the test parameters. The function should accept one argument of -// type testing::TestParamInfo<class ParamType>, and return std::string. +// The last argument to INSTANTIATE_TEST_SUITE_P allows the user to specify +// generator and an optional function or functor that generates custom test name +// suffixes based on the test parameters. Such a function or functor should +// accept one argument of type testing::TestParamInfo<class ParamType>, and +// return std::string. -// returns the value of testing::PrintToString(GetParam()). It does not work -// for std::string or C strings. +// returns the value of testing::PrintToString(GetParam()). -// alphanumeric characters or underscore. +// alphanumeric characters or underscore. Because PrintToString adds quotes +// to std::string and C strings, it won't work for these types. -# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \ - ::testing::internal::ParamGenerator<test_case_name::ParamType> \ - gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ - ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \ - const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \ - return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \ - (__VA_ARGS__)(info); \ - } \ - int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder<test_case_name>(\ - #test_case_name, \ - ::testing::internal::CodeLocation(\ - __FILE__, __LINE__))->AddTestCaseInstantiation(\ - #prefix, \ - >est_##prefix##test_case_name##_EvalGenerator_, \ - >est_##prefix##test_case_name##_EvalGenerateName_, \ - __FILE__, __LINE__) +#define GTEST_EXPAND_(arg) arg +#define GTEST_GET_FIRST_(first, ...) first +#define GTEST_GET_SECOND_(first, second, ...) second + +#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, ...) \ + static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \ + gtest_##prefix##test_suite_name##_EvalGenerator_() { \ + return GTEST_EXPAND_(GTEST_GET_FIRST_(__VA_ARGS__, DUMMY_PARAM_)); \ + } \ + static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_( \ + const ::testing::TestParamInfo<test_suite_name::ParamType> &info) { \ + if (::testing::internal::AlwaysFalse()) { \ + ::testing::internal::TestNotEmpty(GTEST_EXPAND_(GTEST_GET_SECOND_( \ + __VA_ARGS__, \ + ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \ + DUMMY_PARAM_))); \ + auto t = std::make_tuple(__VA_ARGS__); \ + static_assert(std::tuple_size<decltype(t)>::value <= 2, \ + "Too Many Args!"); \ + } \ + return ((GTEST_EXPAND_(GTEST_GET_SECOND_( \ + __VA_ARGS__, \ + ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \ + DUMMY_PARAM_))))(info); \ + } \ + static int gtest_##prefix##test_suite_name##_dummy_ \ + GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::UnitTest::GetInstance() \ + ->parameterized_test_registry() \ + .GetTestSuitePatternHolder<test_suite_name>( \ + GTEST_STRINGIFY_(test_suite_name), \ + ::testing::internal::CodeLocation(__FILE__, __LINE__)) \ + ->AddTestSuiteInstantiation( \ + GTEST_STRINGIFY_(prefix), \ + >est_##prefix##test_suite_name##_EvalGenerator_, \ + >est_##prefix##test_suite_name##_EvalGenerateName_, \ + __FILE__, __LINE__) + +// Allow Marking a Parameterized test class as not needing to be instantiated. +#define GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(T) \ + namespace gtest_do_not_use_outside_namespace_scope {} \ + static const ::testing::internal::MarkAsIgnored gtest_allow_ignore_##T( \ + GTEST_STRINGIFY_(T)) + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define INSTANTIATE_TEST_CASE_P \ + static_assert(::testing::internal::InstantiateTestCase_P_IsDeprecated(), \ + ""); \ + INSTANTIATE_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ -#endif // GTEST_HAS_PARAM_TEST -
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
17988
17989
17990
17991
17992
17993
17994
17995
17996
17997
// tie(external_flag_1, external_flag_2) = GetParam(); // } // }; // // TEST_P(FlagDependentTest, TestFeature1) { // // Test your code using external_flag_1 and external_flag_2 here. // } // INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, // Combine(Bool(), Bool())); //
+ show +
17998
17999
18000
18001
18002
18003
18004
18005
18006
18007
18008
18009
18010
18011
18012
18013
18014
18015
18016
18017
18018
18019
18020
18021
18022
18023
18024
18025
18026
18027
18028
18029
18030
18031
18032
18033
18034
18035
18036
18037
18038
18039
18040
18041
18042
18043
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
18060
18061
18062
18063
18064
18065
18066
18067
18068
18069
18070
18071
18072
18073
18074
18075
18076
18077
18078
18079
18080
18081
18082
18083
18084
18085
18086
18087
18088
18089
18090
18091
18092
18093
18094
18095
18096
18097
18098
18099
18100
18101
18102
18103
18104
18105
18106
18107
18108
18109
18110
18111
18112
18113
18114
18115
18116
18117
18118
18119
18120
18121
18122
18123
18124
18125
18126
18127
18128
18129
18130
18131
18132
18133
18134
18135
18136
18137
18138
18139
18140
18141
18142
18143
18144
18145
18146
18147
18148
18149
18150
18151
18152
18153
18154
18155
18156
18157
18158
18159
18160
18161
18162
18163
18164
18165
18166
18167
template <typename Generator1, typename Generator2> internal::CartesianProductHolder2<Generator1, Generator2> Combine( const Generator1& g1, const Generator2& g2) { return internal::CartesianProductHolder2<Generator1, Generator2>( g1, g2); } template <typename Generator1, typename Generator2, typename Generator3> internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3) { return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( g1, g2, g3); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4> internal::CartesianProductHolder4<Generator1, Generator2, Generator3, Generator4> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4) { return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, Generator4>( g1, g2, g3, g4); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5> internal::CartesianProductHolder5<Generator1, Generator2, Generator3, Generator4, Generator5> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5) { return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, Generator4, Generator5>( g1, g2, g3, g4, g5); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6> internal::CartesianProductHolder6<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6) { return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6>( g1, g2, g3, g4, g5, g6); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7> internal::CartesianProductHolder7<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7) { return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7>( g1, g2, g3, g4, g5, g6, g7); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7, typename Generator8> internal::CartesianProductHolder8<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8) { return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8>( g1, g2, g3, g4, g5, g6, g7, g8); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7, typename Generator8, typename Generator9> internal::CartesianProductHolder9<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8, const Generator9& g9) { return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( g1, g2, g3, g4, g5, g6, g7, g8, g9); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7, typename Generator8, typename Generator9, typename Generator10> internal::CartesianProductHolder10<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8, const Generator9& g9, const Generator10& g10) { return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10>( g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); } # endif // GTEST_HAS_COMBINE # define TEST_P(test_case_name, test_name) \ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ : public test_case_name { \ public: \ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ virtual void TestBody(); \ private: \ static int AddToRegistry() { \ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ GetTestCasePatternHolder<test_case_name>(\ #test_case_name, \ ::testing::internal::CodeLocation(\ __FILE__, __LINE__))->AddTestPattern(\ #test_case_name, \ #test_name, \ new ::testing::internal::TestMetaFactory< \ GTEST_TEST_CLASS_NAME_(\ test_case_name, test_name)>()); \ return 0; \ } \ static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ GTEST_DISALLOW_COPY_AND_ASSIGN_(\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ }; \ int GTEST_TEST_CLASS_NAME_(test_case_name, \ test_name)::gtest_registering_dummy_ = \ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() // The optional last argument to INSTANTIATE_TEST_CASE_P allows the user // to specify a function or functor that generates custom test name suffixes // based on the test parameters. The function should accept one argument of // type testing::TestParamInfo<class ParamType>, and return std::string. // // testing::PrintToStringParamName is a builtin test suffix generator that // returns the value of testing::PrintToString(GetParam()). It does not work // for std::string or C strings. // // Note: test names must be non-empty, unique, and may only contain ASCII // alphanumeric characters or underscore. # define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \ ::testing::internal::ParamGenerator<test_case_name::ParamType> \ gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \ const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \ return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \ (__VA_ARGS__)(info); \ } \ int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ GetTestCasePatternHolder<test_case_name>(\ #test_case_name, \ ::testing::internal::CodeLocation(\ __FILE__, __LINE__))->AddTestCaseInstantiation(\ #prefix, \ &gtest_##prefix##test_case_name##_EvalGenerator_, \ &gtest_##prefix##test_case_name##_EvalGenerateName_, \ __FILE__, __LINE__) } // namespace testing #endif // GTEST_HAS_PARAM_TEST
+ show +
18168
18169
18170
18171
18172
18173
18174
18175
18176
18177
#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ // Copyright 2006, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright

[CVE-2020-0470_1.diff] gtest-param-test.h #13
-// For example, this instantiates tests from test case BarTest each +// For example, this instantiates tests from test suite BarTest each -// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); +// INSTANTIATE_TEST_SUITE_P(NumSequence, +// BarTest, +// Values("one", "two", "three")); -// This instantiates tests from test case BazTest each with values 1, 2, 3.5. +// This instantiates tests from test suite BazTest each with values 1, 2, 3.5. -// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); +// INSTANTIATE_TEST_SUITE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); -// Currently, Values() supports from 1 to 50 parameters. -template <typename T1> -internal::ValueArray1<T1> Values(T1 v1) { - return internal::ValueArray1<T1>(v1); -} - -template <typename T1, typename T2> -internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { - return internal::ValueArray2<T1, T2>(v1, v2); -} - -template <typename T1, typename T2, typename T3> -internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { - return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); -} - -template <typename T1, typename T2, typename T3, typename T4> -internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { - return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5> -internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5) { - return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6> -internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6) { - return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7> -internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7) { - return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, - v6, v7); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8> -internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { - return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, - v5, v6, v7, v8); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9> -internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { - return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, - v4, v5, v6, v7, v8, v9); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10> -internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { - return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11> -internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, - T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11) { - return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, - T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12> -internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12) { - return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13> -internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, - T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13) { - return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14> -internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { - return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15> -internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { - return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16> -internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16) { - return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17> -internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17) { - return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18> -internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18) { - return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19> -internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { - return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20> -internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { - return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21> -internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { - return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22> -internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22) { - return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23> -internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23) { - return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24> -internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24) { - return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25> -internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { - return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26> -internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26) { - return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27> -internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, - T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27) { - return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28> -internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, - T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28) { - return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29> -internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29) { - return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30> -internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { - return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31> -internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { - return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32> -internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32) { - return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33> -internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33) { - return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34> -internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34) { - return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35> -internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { - return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36> -internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { - return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37> -internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37) { - return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38> -internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38) { - return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, - v33, v34, v35, v36, v37, v38); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39> -internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38, T39 v39) { - return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, - v32, v33, v34, v35, v36, v37, v38, v39); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40> -internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, - T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, - T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { - return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, - v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41> -internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, - T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { - return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, - v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42> -internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, - T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42) { - return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, - v42); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43> -internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, - T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43) { - return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, - v41, v42, v43); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44> -internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44) { - return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, - v40, v41, v42, v43, v44); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45> -internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, - T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, - T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { - return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, - v39, v40, v41, v42, v43, v44, v45); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46> -internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { - return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47> -internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { - return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47, typename T48> -internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, - T48 v48) { - return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, - v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47, typename T48, typename T49> -internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, - T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, - T47 v47, T48 v48, T49 v49) { - return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, - v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); -} - -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11, typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, typename T20, - typename T21, typename T22, typename T23, typename T24, typename T25, - typename T26, typename T27, typename T28, typename T29, typename T30, - typename T31, typename T32, typename T33, typename T34, typename T35, - typename T36, typename T37, typename T38, typename T39, typename T40, - typename T41, typename T42, typename T43, typename T44, typename T45, - typename T46, typename T47, typename T48, typename T49, typename T50> -internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, - T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, - T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, - T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, - T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { - return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, - T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, - T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, - v48, v49, v50); +template <typename... T> +internal::ValueArray<T...> Values(T... v) { + return internal::ValueArray<T...>(std::move(v)...);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
// // INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); // // This instantiates tests from test case BazTest each with values 1, 2, 3.5. // The exact type of values will depend on the type of parameter in BazTest. // // INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); // // Currently, Values() supports from 1 to 50 parameters. //
+ show +
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310
17311
17312
17313
17314
17315
17316
17317
17318
17319
17320
17321
17322
17323
17324
17325
17326
17327
17328
17329
17330
17331
17332
17333
17334
17335
17336
17337
17338
17339
17340
17341
17342
17343
17344
17345
17346
17347
17348
17349
17350
17351
17352
17353
17354
17355
17356
17357
17358
17359
17360
17361
17362
17363
17364
17365
17366
17367
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387
17388
17389
17390
17391
17392
17393
17394
17395
17396
17397
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408
17409
17410
17411
17412
17413
17414
17415
17416
17417
17418
17419
17420
17421
17422
17423
17424
17425
17426
17427
17428
17429
17430
17431
17432
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
17448
17449
17450
17451
17452
17453
17454
17455
17456
17457
17458
17459
17460
17461
17462
17463
17464
17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
17480
17481
17482
17483
17484
17485
17486
17487
17488
17489
17490
17491
17492
17493
17494
17495
17496
17497
17498
17499
17500
17501
17502
17503
17504
17505
17506
17507
17508
17509
17510
17511
17512
17513
17514
17515
17516
17517
17518
17519
17520
17521
17522
17523
17524
17525
17526
17527
17528
17529
17530
17531
17532
17533
17534
17535
17536
17537
17538
17539
17540
17541
17542
17543
17544
17545
17546
17547
17548
17549
17550
17551
17552
17553
17554
17555
17556
17557
17558
17559
17560
17561
17562
17563
17564
17565
17566
17567
17568
17569
17570
17571
17572
17573
17574
17575
17576
17577
17578
17579
17580
17581
17582
17583
17584
17585
17586
17587
17588
17589
17590
17591
17592
17593
17594
17595
17596
17597
17598
17599
17600
17601
17602
17603
17604
17605
17606
17607
17608
17609
17610
17611
17612
17613
17614
17615
17616
17617
17618
17619
17620
17621
17622
17623
17624
17625
17626
17627
17628
17629
17630
17631
17632
17633
17634
17635
17636
17637
17638
17639
17640
17641
17642
17643
17644
17645
17646
17647
17648
17649
17650
17651
17652
17653
17654
17655
17656
17657
17658
17659
17660
17661
17662
17663
17664
17665
17666
17667
17668
17669
17670
17671
17672
17673
17674
17675
17676
17677
17678
17679
17680
17681
17682
17683
17684
17685
17686
17687
17688
17689
17690
17691
17692
17693
17694
17695
17696
17697
17698
17699
17700
17701
17702
17703
17704
17705
17706
17707
17708
17709
17710
17711
17712
17713
17714
17715
17716
17717
17718
17719
17720
17721
17722
17723
17724
17725
17726
17727
17728
17729
17730
17731
17732
17733
17734
17735
17736
17737
17738
17739
17740
17741
17742
17743
17744
17745
17746
17747
17748
17749
17750
17751
17752
17753
17754
17755
17756
17757
17758
17759
17760
17761
17762
17763
17764
17765
17766
17767
17768
17769
17770
17771
17772
17773
17774
17775
17776
17777
17778
17779
17780
17781
17782
17783
17784
17785
17786
17787
17788
17789
17790
17791
17792
17793
17794
17795
17796
17797
17798
17799
17800
17801
17802
17803
17804
17805
17806
17807
17808
17809
17810
17811
17812
17813
17814
17815
17816
17817
17818
17819
17820
17821
17822
17823
17824
17825
17826
17827
17828
17829
17830
17831
17832
17833
17834
17835
17836
17837
17838
17839
17840
17841
17842
17843
17844
17845
17846
17847
17848
17849
17850
17851
17852
17853
17854
17855
17856
17857
17858
17859
17860
17861
17862
17863
17864
17865
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
17912
17913
17914
17915
17916
17917
17918
17919
17920
17921
17922
template <typename T1> internal::ValueArray1<T1> Values(T1 v1) { return internal::ValueArray1<T1>(v1); } template <typename T1, typename T2> internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { return internal::ValueArray2<T1, T2>(v1, v2); } template <typename T1, typename T2, typename T3> internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); } template <typename T1, typename T2, typename T3, typename T4> internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); } template <typename T1, typename T2, typename T3, typename T4, typename T5> internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) { return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) { return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, v6, v7); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, v5, v6, v7, v8); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, v4, v5, v6, v7, v8, v9); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11) { return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12) { return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13> internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13) { return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14> internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15> internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16> internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) { return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17> internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17) { return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18> internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18) { return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19> internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20> internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21> internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22> internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) { return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23> internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) { return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24> internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) { return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25> internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26> internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26) { return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27> internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27) { return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28> internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28) { return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29> internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29) { return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30> internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31> internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32> internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) { return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33> internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33) { return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34> internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34) { return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35> internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36> internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37> internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37) { return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38> internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) { return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39> internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) { return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40> internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41> internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42> internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42) { return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43> internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43) { return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44> internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44) { return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45> internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46> internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47> internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48> internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) { return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49> internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49) { return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49, typename T50> internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50);
+ show +
17923
17924
17925
17926
17927
17928
17929
17930
17931
17932
} // Bool() allows generating tests with parameters in a set of (false, true). // // Synopsis: // Bool() // - returns a generator producing sequences with elements {false, true}. // // It is useful when testing code that depends on Boolean flags. Combinations // of multiple flags can be tested when several Bool()'s are combined using
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
// // INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); // // This instantiates tests from test case BazTest each with values 1, 2, 3.5. // The exact type of values will depend on the type of parameter in BazTest. // // INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); // // Currently, Values() supports from 1 to 50 parameters. //
+ show +
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
16703
16704
16705
16706
16707
16708
16709
16710
16711
16712
16713
16714
16715
16716
16717
16718
16719
16720
16721
16722
16723
16724
16725
16726
16727
16728
16729
16730
16731
16732
16733
16734
16735
16736
16737
16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
16752
16753
16754
16755
16756
16757
16758
16759
16760
16761
16762
16763
16764
16765
16766
16767
template <typename T1> internal::ValueArray1<T1> Values(T1 v1) { return internal::ValueArray1<T1>(v1); } template <typename T1, typename T2> internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { return internal::ValueArray2<T1, T2>(v1, v2); } template <typename T1, typename T2, typename T3> internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); } template <typename T1, typename T2, typename T3, typename T4> internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); } template <typename T1, typename T2, typename T3, typename T4, typename T5> internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) { return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) { return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, v6, v7); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, v5, v6, v7, v8); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, v4, v5, v6, v7, v8, v9); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11) { return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12) { return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13> internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13) { return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14> internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15> internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16> internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) { return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17> internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17) { return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18> internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18) { return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19> internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20> internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21> internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22> internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) { return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23> internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) { return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24> internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) { return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25> internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26> internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26) { return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27> internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27) { return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28> internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28) { return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29> internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29) { return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30> internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31> internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32> internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) { return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33> internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33) { return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34> internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34) { return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35> internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36> internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37> internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37) { return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38> internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) { return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39> internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) { return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40> internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41> internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42> internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42) { return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43> internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43) { return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44> internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44) { return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45> internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46> internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47> internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48> internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) { return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49> internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49) { return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); } template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename T21, typename T22, typename T23, typename T24, typename T25, typename T26, typename T27, typename T28, typename T29, typename T30, typename T31, typename T32, typename T33, typename T34, typename T35, typename T36, typename T37, typename T38, typename T39, typename T40, typename T41, typename T42, typename T43, typename T44, typename T45, typename T46, typename T47, typename T48, typename T49, typename T50> internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50);
+ show +
16768
16769
16770
16771
16772
16773
16774
16775
16776
16777
} // Bool() allows generating tests with parameters in a set of (false, true). // // Synopsis: // Bool() // - returns a generator producing sequences with elements {false, true}. // // It is useful when testing code that depends on Boolean flags. Combinations // of multiple flags can be tested when several Bool()'s are combined using

[CVE-2020-0470_1.diff] gtest-param-test.h #16
-// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types +// std::tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types -// Combine can have up to 10 arguments. This number is currently limited -// by the maximum number of elements in the tuple implementation used by Google -// Test. +// Combine can have up to 10 arguments. -// This will instantiate tests in test case AnimalTest each one with +// This will instantiate tests in test suite AnimalTest each one with -// : public testing::TestWithParam<tuple<const char*, Color> > {...}; +// : public testing::TestWithParam<std::tuple<const char*, Color> > {...}; -// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, -// Combine(Values("cat", "dog"), -// Values(BLACK, WHITE))); +// INSTANTIATE_TEST_SUITE_P(AnimalVariations, AnimalTest, +// Combine(Values("cat", "dog"), +// Values(BLACK, WHITE))); -// : public testing::TestWithParam<tuple<bool, bool> > { +// : public testing::TestWithParam<std::tuple<bool, bool> > { -// tie(external_flag_1, external_flag_2) = GetParam(); +// std::tie(external_flag_1, external_flag_2) = GetParam(); -// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, -// Combine(Bool(), Bool())); +// INSTANTIATE_TEST_SUITE_P(TwoBoolSequence, FlagDependentTest, +// Combine(Bool(), Bool())); -template <typename Generator1, typename Generator2> -internal::CartesianProductHolder2<Generator1, Generator2> Combine( - const Generator1& g1, const Generator2& g2) { - return internal::CartesianProductHolder2<Generator1, Generator2>( - g1, g2); +template <typename... Generator> +internal::CartesianProductHolder<Generator...> Combine(const Generator &... g) { + return internal::CartesianProductHolder<Generator...>(g...); -template <typename Generator1, typename Generator2, typename Generator3> -internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3) { - return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( - g1, g2, g3); -} +#define TEST_P(test_suite_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \ + : public test_suite_name { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \ + void TestBody() override; \ + \ + private: \ + static int AddToRegistry() { \ + ::testing::UnitTest::GetInstance() \ + ->parameterized_test_registry() \ + .GetTestSuitePatternHolder<test_suite_name>( \ + GTEST_STRINGIFY_(test_suite_name), \ + ::testing::internal::CodeLocation(__FILE__, __LINE__)) \ + ->AddTestPattern( \ + GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name), \ + new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \ + test_suite_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \ + test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_suite_name, \ + test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \ + void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody() -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4> -internal::CartesianProductHolder4<Generator1, Generator2, Generator3, - Generator4> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4) { - return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, - Generator4>( - g1, g2, g3, g4); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5> -internal::CartesianProductHolder5<Generator1, Generator2, Generator3, - Generator4, Generator5> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5) { - return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, - Generator4, Generator5>( - g1, g2, g3, g4, g5); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6> -internal::CartesianProductHolder6<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6) { - return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6>( - g1, g2, g3, g4, g5, g6); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7> -internal::CartesianProductHolder7<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7) { - return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7>( - g1, g2, g3, g4, g5, g6, g7); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8> -internal::CartesianProductHolder8<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8) { - return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8>( - g1, g2, g3, g4, g5, g6, g7, g8); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8, typename Generator9> -internal::CartesianProductHolder9<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, - Generator9> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9) { - return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( - g1, g2, g3, g4, g5, g6, g7, g8, g9); -} - -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8, typename Generator9, - typename Generator10> -internal::CartesianProductHolder10<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, - Generator10> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9, - const Generator10& g10) { - return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, - Generator10>( - g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); -} -# endif // GTEST_HAS_COMBINE - - - -# define TEST_P(test_case_name, test_name) \ - class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ - : public test_case_name { \ - public: \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ - virtual void TestBody(); \ - private: \ - static int AddToRegistry() { \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder<test_case_name>(\ - #test_case_name, \ - ::testing::internal::CodeLocation(\ - __FILE__, __LINE__))->AddTestPattern(\ - #test_case_name, \ - #test_name, \ - new ::testing::internal::TestMetaFactory< \ - GTEST_TEST_CLASS_NAME_(\ - test_case_name, test_name)>()); \ - return 0; \ - } \ - static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ - GTEST_DISALLOW_COPY_AND_ASSIGN_(\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ - }; \ - int GTEST_TEST_CLASS_NAME_(test_case_name, \ - test_name)::gtest_registering_dummy_ = \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ - void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() - -// The optional last argument to INSTANTIATE_TEST_CASE_P allows the user -// to specify a function or functor that generates custom test name suffixes -// based on the test parameters. The function should accept one argument of -// type testing::TestParamInfo<class ParamType>, and return std::string. +// The last argument to INSTANTIATE_TEST_SUITE_P allows the user to specify +// generator and an optional function or functor that generates custom test name +// suffixes based on the test parameters. Such a function or functor should +// accept one argument of type testing::TestParamInfo<class ParamType>, and +// return std::string. -// returns the value of testing::PrintToString(GetParam()). It does not work -// for std::string or C strings. +// returns the value of testing::PrintToString(GetParam()). -// alphanumeric characters or underscore. +// alphanumeric characters or underscore. Because PrintToString adds quotes +// to std::string and C strings, it won't work for these types. -# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \ - ::testing::internal::ParamGenerator<test_case_name::ParamType> \ - gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ - ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \ - const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \ - return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \ - (__VA_ARGS__)(info); \ - } \ - int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder<test_case_name>(\ - #test_case_name, \ - ::testing::internal::CodeLocation(\ - __FILE__, __LINE__))->AddTestCaseInstantiation(\ - #prefix, \ - >est_##prefix##test_case_name##_EvalGenerator_, \ - >est_##prefix##test_case_name##_EvalGenerateName_, \ - __FILE__, __LINE__) +#define GTEST_EXPAND_(arg) arg +#define GTEST_GET_FIRST_(first, ...) first +#define GTEST_GET_SECOND_(first, second, ...) second + +#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, ...) \ + static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \ + gtest_##prefix##test_suite_name##_EvalGenerator_() { \ + return GTEST_EXPAND_(GTEST_GET_FIRST_(__VA_ARGS__, DUMMY_PARAM_)); \ + } \ + static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_( \ + const ::testing::TestParamInfo<test_suite_name::ParamType> &info) { \ + if (::testing::internal::AlwaysFalse()) { \ + ::testing::internal::TestNotEmpty(GTEST_EXPAND_(GTEST_GET_SECOND_( \ + __VA_ARGS__, \ + ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \ + DUMMY_PARAM_))); \ + auto t = std::make_tuple(__VA_ARGS__); \ + static_assert(std::tuple_size<decltype(t)>::value <= 2, \ + "Too Many Args!"); \ + } \ + return ((GTEST_EXPAND_(GTEST_GET_SECOND_( \ + __VA_ARGS__, \ + ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \ + DUMMY_PARAM_))))(info); \ + } \ + static int gtest_##prefix##test_suite_name##_dummy_ \ + GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::UnitTest::GetInstance() \ + ->parameterized_test_registry() \ + .GetTestSuitePatternHolder<test_suite_name>( \ + GTEST_STRINGIFY_(test_suite_name), \ + ::testing::internal::CodeLocation(__FILE__, __LINE__)) \ + ->AddTestSuiteInstantiation( \ + GTEST_STRINGIFY_(prefix), \ + >est_##prefix##test_suite_name##_EvalGenerator_, \ + >est_##prefix##test_suite_name##_EvalGenerateName_, \ + __FILE__, __LINE__) + +// Allow Marking a Parameterized test class as not needing to be instantiated. +#define GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(T) \ + namespace gtest_do_not_use_outside_namespace_scope {} \ + static const ::testing::internal::MarkAsIgnored gtest_allow_ignore_##T( \ + GTEST_STRINGIFY_(T)) + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +#define INSTANTIATE_TEST_CASE_P \ + static_assert(::testing::internal::InstantiateTestCase_P_IsDeprecated(), \ + ""); \ + INSTANTIATE_TEST_SUITE_P +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ -#endif // GTEST_HAS_PARAM_TEST -
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
17988
17989
17990
17991
17992
17993
17994
17995
17996
17997
// tie(external_flag_1, external_flag_2) = GetParam(); // } // }; // // TEST_P(FlagDependentTest, TestFeature1) { // // Test your code using external_flag_1 and external_flag_2 here. // } // INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, // Combine(Bool(), Bool())); //
+ show +
17998
17999
18000
18001
18002
18003
18004
18005
18006
18007
18008
18009
18010
18011
18012
18013
18014
18015
18016
18017
18018
18019
18020
18021
18022
18023
18024
18025
18026
18027
18028
18029
18030
18031
18032
18033
18034
18035
18036
18037
18038
18039
18040
18041
18042
18043
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
18060
18061
18062
18063
18064
18065
18066
18067
18068
18069
18070
18071
18072
18073
18074
18075
18076
18077
18078
18079
18080
18081
18082
18083
18084
18085
18086
18087
18088
18089
18090
18091
18092
18093
18094
18095
18096
18097
18098
18099
18100
18101
18102
18103
18104
18105
18106
18107
18108
18109
18110
18111
18112
18113
18114
18115
18116
18117
18118
18119
18120
18121
18122
18123
18124
18125
18126
18127
18128
18129
18130
18131
18132
18133
18134
18135
18136
18137
18138
18139
18140
18141
18142
18143
18144
18145
18146
18147
18148
18149
18150
18151
18152
18153
18154
18155
18156
18157
18158
18159
18160
18161
18162
18163
18164
18165
18166
18167
template <typename Generator1, typename Generator2> internal::CartesianProductHolder2<Generator1, Generator2> Combine( const Generator1& g1, const Generator2& g2) { return internal::CartesianProductHolder2<Generator1, Generator2>( g1, g2); } template <typename Generator1, typename Generator2, typename Generator3> internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3) { return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( g1, g2, g3); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4> internal::CartesianProductHolder4<Generator1, Generator2, Generator3, Generator4> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4) { return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, Generator4>( g1, g2, g3, g4); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5> internal::CartesianProductHolder5<Generator1, Generator2, Generator3, Generator4, Generator5> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5) { return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, Generator4, Generator5>( g1, g2, g3, g4, g5); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6> internal::CartesianProductHolder6<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6) { return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6>( g1, g2, g3, g4, g5, g6); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7> internal::CartesianProductHolder7<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7) { return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7>( g1, g2, g3, g4, g5, g6, g7); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7, typename Generator8> internal::CartesianProductHolder8<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8) { return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8>( g1, g2, g3, g4, g5, g6, g7, g8); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7, typename Generator8, typename Generator9> internal::CartesianProductHolder9<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8, const Generator9& g9) { return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( g1, g2, g3, g4, g5, g6, g7, g8, g9); } template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, typename Generator6, typename Generator7, typename Generator8, typename Generator9, typename Generator10> internal::CartesianProductHolder10<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10> Combine( const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8, const Generator9& g9, const Generator10& g10) { return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10>( g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); } # endif // GTEST_HAS_COMBINE # define TEST_P(test_case_name, test_name) \ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ : public test_case_name { \ public: \ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ virtual void TestBody(); \ private: \ static int AddToRegistry() { \ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ GetTestCasePatternHolder<test_case_name>(\ #test_case_name, \ ::testing::internal::CodeLocation(\ __FILE__, __LINE__))->AddTestPattern(\ #test_case_name, \ #test_name, \ new ::testing::internal::TestMetaFactory< \ GTEST_TEST_CLASS_NAME_(\ test_case_name, test_name)>()); \ return 0; \ } \ static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ GTEST_DISALLOW_COPY_AND_ASSIGN_(\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ }; \ int GTEST_TEST_CLASS_NAME_(test_case_name, \ test_name)::gtest_registering_dummy_ = \ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() // The optional last argument to INSTANTIATE_TEST_CASE_P allows the user // to specify a function or functor that generates custom test name suffixes // based on the test parameters. The function should accept one argument of // type testing::TestParamInfo<class ParamType>, and return std::string. // // testing::PrintToStringParamName is a builtin test suffix generator that // returns the value of testing::PrintToString(GetParam()). It does not work // for std::string or C strings. // // Note: test names must be non-empty, unique, and may only contain ASCII // alphanumeric characters or underscore. # define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \ ::testing::internal::ParamGenerator<test_case_name::ParamType> \ gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \ const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \ return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \ (__VA_ARGS__)(info); \ } \ int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ GetTestCasePatternHolder<test_case_name>(\ #test_case_name, \ ::testing::internal::CodeLocation(\ __FILE__, __LINE__))->AddTestCaseInstantiation(\ #prefix, \ &gtest_##prefix##test_case_name##_EvalGenerator_, \ &gtest_##prefix##test_case_name##_EvalGenerateName_, \ __FILE__, __LINE__) } // namespace testing #endif // GTEST_HAS_PARAM_TEST
+ show +
18168
18169
18170
18171
18172
18173
18174
18175
18176
18177
#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ // Copyright 2006, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright

[CVE-2020-0478_1.diff] gtest.h #24
- // Returns the test case name. - const char* test_case_name() const { return test_case_name_.c_str(); } + // Returns the test suite name. + const char *test_suite_name() const { return test_suite_name_.c_str(); } + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + const char *test_case_name() const { return test_suite_name(); } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ - const char* name() const { return name_.c_str(); } + const char *name() const { return name_.c_str(); } - const char* type_param() const { - if (type_param_.get() != NULL) - return type_param_->c_str(); - return NULL; + const char *type_param() const { + if (type_param_.get() != nullptr) return type_param_->c_str(); + return nullptr; - const char* value_param() const { - if (value_param_.get() != NULL) - return value_param_->c_str(); - return NULL; + const char *value_param() const { + if (value_param_.get() != nullptr) return value_param_->c_str(); + return nullptr; - const char* file() const { return location_.file.c_str(); } + const char *file() const { return location_.file.c_str(); } + // Return true if this test should not be run because it's in another shard. + bool is_in_another_shard() const { return is_in_another_shard_; } + - // The full name of a test Bar in test case Foo is defined as + // The full name of a test Bar in test suite Foo is defined as
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
641
642
643
644
645
646
647
648
649
650
// The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. class GTEST_API_ TestInfo { public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name.
+ show +
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
const char* test_case_name() const { return test_case_name_.c_str(); } // Returns the test name. const char* name() const { return name_.c_str(); } // Returns the name of the parameter type, or NULL if this is not a typed // or a type-parameterized test. const char* type_param() const { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; } // Returns the text representation of the value parameter, or NULL if this // is not a value-parameterized test. const char* value_param() const { if (value_param_.get() != NULL) return value_param_->c_str(); return NULL; } // Returns the file name where this test is defined. const char* file() const { return location_.file.c_str(); }
+ show +
674
675
676
677
678
679
680
681
682
683
// Returns the line where this test is defined. int line() const { return location_.line; } // Returns true if this test should run, that is if the test is not // disabled (or it is disabled but the also_run_disabled_tests flag has // been specified) and its full name matches the user-specified filter. // // Google Test allows the user to filter the tests by their full names. // The full name of a test Bar in test case Foo is defined as
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19240
19241
19242
19243
19244
19245
19246
19247
19248
19249
// The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. class GTEST_API_ TestInfo { public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name.
+ show +
19250
19251
19252
19253
19254
19255
19256
19257
19258
19259
19260
19261
19262
19263
19264
19265
19266
19267
19268
19269
19270
19271
19272
const char* test_case_name() const { return test_case_name_.c_str(); } // Returns the test name. const char* name() const { return name_.c_str(); } // Returns the name of the parameter type, or NULL if this is not a typed // or a type-parameterized test. const char* type_param() const { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; } // Returns the text representation of the value parameter, or NULL if this // is not a value-parameterized test. const char* value_param() const { if (value_param_.get() != NULL) return value_param_->c_str(); return NULL; } // Returns the file name where this test is defined. const char* file() const { return location_.file.c_str(); }
+ show +
19273
19274
19275
19276
19277
19278
19279
19280
19281
19282
// Returns the line where this test is defined. int line() const { return location_.line; } // Returns true if this test should run, that is if the test is not // disabled (or it is disabled but the also_run_disabled_tests flag has // been specified) and its full name matches the user-specified filter. // // Google Test allows the user to filter the tests by their full names. // The full name of a test Bar in test case Foo is defined as
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
679
680
681
682
683
684
685
686
687
688
// The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. class GTEST_API_ TestInfo { public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name.
+ show +
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
const char* test_case_name() const { return test_case_name_.c_str(); } // Returns the test name. const char* name() const { return name_.c_str(); } // Returns the name of the parameter type, or NULL if this is not a typed // or a type-parameterized test. const char* type_param() const { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; } // Returns the text representation of the value parameter, or NULL if this // is not a value-parameterized test. const char* value_param() const { if (value_param_.get() != NULL) return value_param_->c_str(); return NULL; } // Returns the file name where this test is defined. const char* file() const { return location_.file.c_str(); }
+ show +
712
713
714
715
716
717
718
719
720
721
// Returns the line where this test is defined. int line() const { return location_.line; } // Return true if this test should not be run because it's in another shard. bool is_in_another_shard() const { return is_in_another_shard_; } // Returns true if this test should run, that is if the test is not // disabled (or it is disabled but the also_run_disabled_tests flag has // been specified) and its full name matches the user-specified filter.

[CVE-2020-0478_1.diff] gtest.h #30
- virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} - virtual void OnTestStart(const TestInfo& /*test_info*/) {} - virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} - virtual void OnTestEnd(const TestInfo& /*test_info*/) {} - virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} - virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} + void OnTestProgramStart(const UnitTest & /*unit_test*/) override {} + void OnTestIterationStart(const UnitTest & /*unit_test*/, + int /*iteration*/) override {} + void OnEnvironmentsSetUpStart(const UnitTest & /*unit_test*/) override {} + void OnEnvironmentsSetUpEnd(const UnitTest & /*unit_test*/) override {} + void OnTestSuiteStart(const TestSuite & /*test_suite*/) override {} +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + void OnTestCaseStart(const TestCase & /*test_case*/) override {} +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + void OnTestStart(const TestInfo & /*test_info*/) override {} + void OnTestPartResult(const TestPartResult & /*test_part_result*/) override {} + void OnTestEnd(const TestInfo & /*test_info*/) override {} + void OnTestSuiteEnd(const TestSuite & /*test_suite*/) override {} +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + void OnTestCaseEnd(const TestCase & /*test_case*/) override {} +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + void OnEnvironmentsTearDownStart(const UnitTest & /*unit_test*/) override {} + void OnEnvironmentsTearDownEnd(const UnitTest & /*unit_test*/) override {} + void OnTestIterationEnd(const UnitTest & /*unit_test*/, + int /*iteration*/) override {} + void OnTestProgramEnd(const UnitTest & /*unit_test*/) override {}
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19635
19636
19637
19638
19639
19640
19641
19642
19643
19644
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
19645
19646
19647
19648
19649
19650
19651
19652
19653
19654
19655
19656
19657
19658
19659
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
19660
19661
19662
19663
19664
19665
19666
19667
19668
19669
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
18421
18422
18423
18424
18425
18426
18427
18428
18429
18430
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
18431
18432
18433
18434
18435
18436
18437
18438
18439
18440
18441
18442
18443
18444
18445
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when

[CVE-2020-0470_1.diff] gtest.h #24
- // Returns the test case name. - const char* test_case_name() const { return test_case_name_.c_str(); } + // Returns the test suite name. + const char *test_suite_name() const { return test_suite_name_.c_str(); } + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + const char *test_case_name() const { return test_suite_name(); } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ - const char* name() const { return name_.c_str(); } + const char *name() const { return name_.c_str(); } - const char* type_param() const { - if (type_param_.get() != NULL) - return type_param_->c_str(); - return NULL; + const char *type_param() const { + if (type_param_.get() != nullptr) return type_param_->c_str(); + return nullptr; - const char* value_param() const { - if (value_param_.get() != NULL) - return value_param_->c_str(); - return NULL; + const char *value_param() const { + if (value_param_.get() != nullptr) return value_param_->c_str(); + return nullptr; - const char* file() const { return location_.file.c_str(); } + const char *file() const { return location_.file.c_str(); } + // Return true if this test should not be run because it's in another shard. + bool is_in_another_shard() const { return is_in_another_shard_; } + - // The full name of a test Bar in test case Foo is defined as + // The full name of a test Bar in test suite Foo is defined as
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
641
642
643
644
645
646
647
648
649
650
// The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. class GTEST_API_ TestInfo { public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name.
+ show +
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
const char* test_case_name() const { return test_case_name_.c_str(); } // Returns the test name. const char* name() const { return name_.c_str(); } // Returns the name of the parameter type, or NULL if this is not a typed // or a type-parameterized test. const char* type_param() const { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; } // Returns the text representation of the value parameter, or NULL if this // is not a value-parameterized test. const char* value_param() const { if (value_param_.get() != NULL) return value_param_->c_str(); return NULL; } // Returns the file name where this test is defined. const char* file() const { return location_.file.c_str(); }
+ show +
674
675
676
677
678
679
680
681
682
683
// Returns the line where this test is defined. int line() const { return location_.line; } // Returns true if this test should run, that is if the test is not // disabled (or it is disabled but the also_run_disabled_tests flag has // been specified) and its full name matches the user-specified filter. // // Google Test allows the user to filter the tests by their full names. // The full name of a test Bar in test case Foo is defined as
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19240
19241
19242
19243
19244
19245
19246
19247
19248
19249
// The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. class GTEST_API_ TestInfo { public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name.
+ show +
19250
19251
19252
19253
19254
19255
19256
19257
19258
19259
19260
19261
19262
19263
19264
19265
19266
19267
19268
19269
19270
19271
19272
const char* test_case_name() const { return test_case_name_.c_str(); } // Returns the test name. const char* name() const { return name_.c_str(); } // Returns the name of the parameter type, or NULL if this is not a typed // or a type-parameterized test. const char* type_param() const { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; } // Returns the text representation of the value parameter, or NULL if this // is not a value-parameterized test. const char* value_param() const { if (value_param_.get() != NULL) return value_param_->c_str(); return NULL; } // Returns the file name where this test is defined. const char* file() const { return location_.file.c_str(); }
+ show +
19273
19274
19275
19276
19277
19278
19279
19280
19281
19282
// Returns the line where this test is defined. int line() const { return location_.line; } // Returns true if this test should run, that is if the test is not // disabled (or it is disabled but the also_run_disabled_tests flag has // been specified) and its full name matches the user-specified filter. // // Google Test allows the user to filter the tests by their full names. // The full name of a test Bar in test case Foo is defined as
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
679
680
681
682
683
684
685
686
687
688
// The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. class GTEST_API_ TestInfo { public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name.
+ show +
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
const char* test_case_name() const { return test_case_name_.c_str(); } // Returns the test name. const char* name() const { return name_.c_str(); } // Returns the name of the parameter type, or NULL if this is not a typed // or a type-parameterized test. const char* type_param() const { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; } // Returns the text representation of the value parameter, or NULL if this // is not a value-parameterized test. const char* value_param() const { if (value_param_.get() != NULL) return value_param_->c_str(); return NULL; } // Returns the file name where this test is defined. const char* file() const { return location_.file.c_str(); }
+ show +
712
713
714
715
716
717
718
719
720
721
// Returns the line where this test is defined. int line() const { return location_.line; } // Return true if this test should not be run because it's in another shard. bool is_in_another_shard() const { return is_in_another_shard_; } // Returns true if this test should run, that is if the test is not // disabled (or it is disabled but the also_run_disabled_tests flag has // been specified) and its full name matches the user-specified filter.

[CVE-2020-0470_1.diff] gtest.h #30
- virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} - virtual void OnTestStart(const TestInfo& /*test_info*/) {} - virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} - virtual void OnTestEnd(const TestInfo& /*test_info*/) {} - virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} - virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} + void OnTestProgramStart(const UnitTest & /*unit_test*/) override {} + void OnTestIterationStart(const UnitTest & /*unit_test*/, + int /*iteration*/) override {} + void OnEnvironmentsSetUpStart(const UnitTest & /*unit_test*/) override {} + void OnEnvironmentsSetUpEnd(const UnitTest & /*unit_test*/) override {} + void OnTestSuiteStart(const TestSuite & /*test_suite*/) override {} +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + void OnTestCaseStart(const TestCase & /*test_case*/) override {} +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + void OnTestStart(const TestInfo & /*test_info*/) override {} + void OnTestPartResult(const TestPartResult & /*test_part_result*/) override {} + void OnTestEnd(const TestInfo & /*test_info*/) override {} + void OnTestSuiteEnd(const TestSuite & /*test_suite*/) override {} +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + void OnTestCaseEnd(const TestCase & /*test_case*/) override {} +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + void OnEnvironmentsTearDownStart(const UnitTest & /*unit_test*/) override {} + void OnEnvironmentsTearDownEnd(const UnitTest & /*unit_test*/) override {} + void OnTestIterationEnd(const UnitTest & /*unit_test*/, + int /*iteration*/) override {} + void OnTestProgramEnd(const UnitTest & /*unit_test*/) override {}
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
19635
19636
19637
19638
19639
19640
19641
19642
19643
19644
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
19645
19646
19647
19648
19649
19650
19651
19652
19653
19654
19655
19656
19657
19658
19659
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
19660
19661
19662
19663
19664
19665
19666
19667
19668
19669
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/gtest.h
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
18421
18422
18423
18424
18425
18426
18427
18428
18429
18430
virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; }; // The convenience class for users who need to override just one or two // methods and are not concerned that a possible change to a signature of // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. class EmptyTestEventListener : public TestEventListener { public:
+ show +
18431
18432
18433
18434
18435
18436
18437
18438
18439
18440
18441
18442
18443
18444
18445
virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} virtual void OnTestStart(const TestInfo& /*test_info*/) {} virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} virtual void OnTestEnd(const TestInfo& /*test_info*/) {} virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) {} virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+ show +
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
}; // TestEventListeners lets users add listeners to track events in Google Test. class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); // Appends an event listener to the end of the list. Google Test assumes // the ownership of the listener (i.e. it will delete the listener when

[CVE-2020-0478_1.diff] gtest-printers.h #7
- static void PrintValue(const T& value, ::std::ostream* os) { - const ::testing::internal::string short_str = value.ShortDebugString(); - const ::testing::internal::string pretty_str = - short_str.length() <= kProtobufOneLinerMaxLength ? - short_str : ("\n" + value.DebugString()); + static void PrintValue(const T &value, ::std::ostream *os) { + std::string pretty_str = value.ShortDebugString(); + if (pretty_str.length() > kProtobufOneLinerMaxLength) { + pretty_str = "\n" + value.DebugString(); + }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
144
145
146
147
148
149
150
151
152
153
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
154
155
156
157
158
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
159
160
161
162
163
164
165
166
167
168
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
10212
10213
10214
10215
10216
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
9344
9345
9346
9347
9348
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
139
140
141
142
143
144
145
146
147
148
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
149
150
151
152
153
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
154
155
156
157
158
159
160
161
162
163
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //

[CVE-2020-0478_1.diff] gtest-printers.h #9
-::std::basic_ostream<Char, CharTraits>& operator<<( - ::std::basic_ostream<Char, CharTraits>& os, const T& x) { - TypeWithoutFormatter<T, - (internal::IsAProtocolMessage<T>::value ? kProtobuf : - internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? - kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); +::std::basic_ostream<Char, CharTraits> &operator<<( + ::std::basic_ostream<Char, CharTraits> &os, const T &x) { + TypeWithoutFormatter< + T, (internal::IsAProtocolMessage<T>::value + ? kProtobuf + : std::is_convertible<const T &, internal::BiggestInt>::value + ? kConvertibleToInteger + : +#if GTEST_INTERNAL_HAS_STRING_VIEW + std::is_convertible<const T &, internal::StringView>::value + ? kConvertibleToStringView + : +#endif + kOtherType)>::PrintValue(x, &os);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
194
195
196
197
198
199
200
201
202
203
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
204
205
206
207
208
209
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
210
211
212
213
214
215
216
217
218
219
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
10262
10263
10264
10265
10266
10267
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
9394
9395
9396
9397
9398
9399
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
189
190
191
192
193
194
195
196
197
198
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
199
200
201
202
203
204
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
205
206
207
208
209
210
211
212
213
214
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {

[CVE-2020-0470_1.diff] gtest-printers.h #7
- static void PrintValue(const T& value, ::std::ostream* os) { - const ::testing::internal::string short_str = value.ShortDebugString(); - const ::testing::internal::string pretty_str = - short_str.length() <= kProtobufOneLinerMaxLength ? - short_str : ("\n" + value.DebugString()); + static void PrintValue(const T &value, ::std::ostream *os) { + std::string pretty_str = value.ShortDebugString(); + if (pretty_str.length() > kProtobufOneLinerMaxLength) { + pretty_str = "\n" + value.DebugString(); + }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
144
145
146
147
148
149
150
151
152
153
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
154
155
156
157
158
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
159
160
161
162
163
164
165
166
167
168
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
10212
10213
10214
10215
10216
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
9344
9345
9346
9347
9348
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
139
140
141
142
143
144
145
146
147
148
}; // We print a protobuf using its ShortDebugString() when the string // doesn't exceed this many characters; otherwise we print it using // DebugString() for better readability. const size_t kProtobufOneLinerMaxLength = 50; template <typename T> class TypeWithoutFormatter<T, kProtobuf> { public:
+ show +
149
150
151
152
153
static void PrintValue(const T& value, ::std::ostream* os) { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString());
+ show +
154
155
156
157
158
159
160
161
162
163
*os << ("<" + pretty_str + ">"); } }; template <typename T> class TypeWithoutFormatter<T, kConvertibleToInteger> { public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. //

[CVE-2020-0470_1.diff] gtest-printers.h #9
-::std::basic_ostream<Char, CharTraits>& operator<<( - ::std::basic_ostream<Char, CharTraits>& os, const T& x) { - TypeWithoutFormatter<T, - (internal::IsAProtocolMessage<T>::value ? kProtobuf : - internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? - kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); +::std::basic_ostream<Char, CharTraits> &operator<<( + ::std::basic_ostream<Char, CharTraits> &os, const T &x) { + TypeWithoutFormatter< + T, (internal::IsAProtocolMessage<T>::value + ? kProtobuf + : std::is_convertible<const T &, internal::BiggestInt>::value + ? kConvertibleToInteger + : +#if GTEST_INTERNAL_HAS_STRING_VIEW + std::is_convertible<const T &, internal::StringView>::value + ? kConvertibleToStringView + : +#endif + kOtherType)>::PrintValue(x, &os);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
194
195
196
197
198
199
200
201
202
203
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
204
205
206
207
208
209
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
210
211
212
213
214
215
216
217
218
219
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
10262
10263
10264
10265
10266
10267
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
9394
9395
9396
9397
9398
9399
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h
189
190
191
192
193
194
195
196
197
198
// Note that this operator<< takes a generic std::basic_ostream<Char, // CharTraits> type instead of the more restricted std::ostream. If // we define it to take an std::ostream instead, we'll get an // "ambiguous overloads" compiler error when trying to print a type // Foo that supports streaming to std::basic_ostream<Char, // CharTraits>, as the compiler cannot tell whether // operator<<(std::ostream&, const T&) or // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T>
+ show +
199
200
201
202
203
204
::std::basic_ostream<Char, CharTraits>& operator<<( ::std::basic_ostream<Char, CharTraits>& os, const T& x) { TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value ? kProtobuf : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ show +
205
206
207
208
209
210
211
212
213
214
return os; } } // namespace internal2 } // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. namespace testing_internal {

[CVE-2020-0478_1.diff] gtest-death-test-internal.h #7
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); - -#else // GTEST_HAS_DEATH_TEST - -// This macro is used for implementing macros such as -// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where -// death tests are not supported. Those macros must compile on such systems -// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on -// systems that support death tests. This allows one to write such a macro -// on a system that does not support death tests and be sure that it will -// compile on a death-test supporting system. -// -// Parameters: -// statement - A statement that a macro such as EXPECT_DEATH would test -// for program termination. This macro has to make sure this -// statement is compiled but not executed, to ensure that -// EXPECT_DEATH_IF_SUPPORTED compiles with a certain -// parameter iff EXPECT_DEATH compiles with it. -// regex - A regex that a macro such as EXPECT_DEATH would use to test -// the output of statement. This parameter has to be -// compiled but not evaluated by this macro, to ensure that -// this macro only accepts expressions that a macro such as -// EXPECT_DEATH would accept. -// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED -// and a return statement for ASSERT_DEATH_IF_SUPPORTED. -// This ensures that ASSERT_DEATH_IF_SUPPORTED will not -// compile inside functions where ASSERT_DEATH doesn't -// compile. -// -// The branch that has an always false condition is used to ensure that -// statement and regex are compiled (and thus syntactically correct) but -// never executed. The unreachable code macro protects the terminator -// statement from generating an 'unreachable code' warning in case -// statement unconditionally returns or throws. The Message constructor at -// the end allows the syntax of streaming additional messages into the -// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. -# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - GTEST_LOG_(WARNING) \ - << "Death tests are not supported on this platform.\n" \ - << "Statement '" #statement "' cannot be verified."; \ - } else if (::testing::internal::AlwaysFalse()) { \ - ::testing::internal::RE::PartialMatch(".*", (regex)); \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - terminator; \ - } else \ - ::testing::Message() +InternalRunDeathTestFlag *ParseInternalRunDeathTestFlag();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
int line_; int index_; int write_fd_; GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); }; // Returns a newly created InternalRunDeathTestFlag object with fields // initialized from the GTEST_FLAG(internal_run_death_test) flag if // the flag is specified; otherwise returns NULL.
+ show +
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); #else // GTEST_HAS_DEATH_TEST // This macro is used for implementing macros such as // EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where // death tests are not supported. Those macros must compile on such systems // iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on // systems that support death tests. This allows one to write such a macro // on a system that does not support death tests and be sure that it will // compile on a death-test supporting system. // // Parameters: // statement - A statement that a macro such as EXPECT_DEATH would test // for program termination. This macro has to make sure this // statement is compiled but not executed, to ensure that // EXPECT_DEATH_IF_SUPPORTED compiles with a certain // parameter iff EXPECT_DEATH compiles with it. // regex - A regex that a macro such as EXPECT_DEATH would use to test // the output of statement. This parameter has to be // compiled but not evaluated by this macro, to ensure that // this macro only accepts expressions that a macro such as // EXPECT_DEATH would accept. // terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED // and a return statement for ASSERT_DEATH_IF_SUPPORTED. // This ensures that ASSERT_DEATH_IF_SUPPORTED will not // compile inside functions where ASSERT_DEATH doesn't // compile. // // The branch that has an always false condition is used to ensure that // statement and regex are compiled (and thus syntactically correct) but // never executed. The unreachable code macro protects the terminator // statement from generating an 'unreachable code' warning in case // statement unconditionally returns or throws. The Message constructor at // the end allows the syntax of streaming additional messages into the // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. # define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ GTEST_LOG_(WARNING) \ << "Death tests are not supported on this platform.\n" \ << "Statement '" #statement "' cannot be verified."; \ } else if (::testing::internal::AlwaysFalse()) { \ ::testing::internal::RE::PartialMatch(".*", (regex)); \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ terminator; \ } else \ ::testing::Message()
+ show +
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
#endif // GTEST_HAS_DEATH_TEST } // namespace internal } // namespace testing #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ namespace testing {
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
int line_; int index_; int write_fd_; GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); }; // Returns a newly created InternalRunDeathTestFlag object with fields // initialized from the GTEST_FLAG(internal_run_death_test) flag if // the flag is specified; otherwise returns NULL.
+ show +
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); #else // GTEST_HAS_DEATH_TEST // This macro is used for implementing macros such as // EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where // death tests are not supported. Those macros must compile on such systems // iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on // systems that support death tests. This allows one to write such a macro // on a system that does not support death tests and be sure that it will // compile on a death-test supporting system. // // Parameters: // statement - A statement that a macro such as EXPECT_DEATH would test // for program termination. This macro has to make sure this // statement is compiled but not executed, to ensure that // EXPECT_DEATH_IF_SUPPORTED compiles with a certain // parameter iff EXPECT_DEATH compiles with it. // regex - A regex that a macro such as EXPECT_DEATH would use to test // the output of statement. This parameter has to be // compiled but not evaluated by this macro, to ensure that // this macro only accepts expressions that a macro such as // EXPECT_DEATH would accept. // terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED // and a return statement for ASSERT_DEATH_IF_SUPPORTED. // This ensures that ASSERT_DEATH_IF_SUPPORTED will not // compile inside functions where ASSERT_DEATH doesn't // compile. // // The branch that has an always false condition is used to ensure that // statement and regex are compiled (and thus syntactically correct) but // never executed. The unreachable code macro protects the terminator // statement from generating an 'unreachable code' warning in case // statement unconditionally returns or throws. The Message constructor at // the end allows the syntax of streaming additional messages into the // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. # define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ GTEST_LOG_(WARNING) \ << "Death tests are not supported on this platform.\n" \ << "Statement '" #statement "' cannot be verified."; \ } else if (::testing::internal::AlwaysFalse()) { \ ::testing::internal::RE::PartialMatch(".*", (regex)); \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ terminator; \ } else \ ::testing::Message()
+ show +
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
#endif // GTEST_HAS_DEATH_TEST } // namespace internal } // namespace testing #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ namespace testing {

[CVE-2020-0470_1.diff] gtest-death-test-internal.h #7
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); - -#else // GTEST_HAS_DEATH_TEST - -// This macro is used for implementing macros such as -// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where -// death tests are not supported. Those macros must compile on such systems -// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on -// systems that support death tests. This allows one to write such a macro -// on a system that does not support death tests and be sure that it will -// compile on a death-test supporting system. -// -// Parameters: -// statement - A statement that a macro such as EXPECT_DEATH would test -// for program termination. This macro has to make sure this -// statement is compiled but not executed, to ensure that -// EXPECT_DEATH_IF_SUPPORTED compiles with a certain -// parameter iff EXPECT_DEATH compiles with it. -// regex - A regex that a macro such as EXPECT_DEATH would use to test -// the output of statement. This parameter has to be -// compiled but not evaluated by this macro, to ensure that -// this macro only accepts expressions that a macro such as -// EXPECT_DEATH would accept. -// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED -// and a return statement for ASSERT_DEATH_IF_SUPPORTED. -// This ensures that ASSERT_DEATH_IF_SUPPORTED will not -// compile inside functions where ASSERT_DEATH doesn't -// compile. -// -// The branch that has an always false condition is used to ensure that -// statement and regex are compiled (and thus syntactically correct) but -// never executed. The unreachable code macro protects the terminator -// statement from generating an 'unreachable code' warning in case -// statement unconditionally returns or throws. The Message constructor at -// the end allows the syntax of streaming additional messages into the -// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. -# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - GTEST_LOG_(WARNING) \ - << "Death tests are not supported on this platform.\n" \ - << "Statement '" #statement "' cannot be verified."; \ - } else if (::testing::internal::AlwaysFalse()) { \ - ::testing::internal::RE::PartialMatch(".*", (regex)); \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - terminator; \ - } else \ - ::testing::Message() +InternalRunDeathTestFlag *ParseInternalRunDeathTestFlag();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
int line_; int index_; int write_fd_; GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); }; // Returns a newly created InternalRunDeathTestFlag object with fields // initialized from the GTEST_FLAG(internal_run_death_test) flag if // the flag is specified; otherwise returns NULL.
+ show +
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); #else // GTEST_HAS_DEATH_TEST // This macro is used for implementing macros such as // EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where // death tests are not supported. Those macros must compile on such systems // iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on // systems that support death tests. This allows one to write such a macro // on a system that does not support death tests and be sure that it will // compile on a death-test supporting system. // // Parameters: // statement - A statement that a macro such as EXPECT_DEATH would test // for program termination. This macro has to make sure this // statement is compiled but not executed, to ensure that // EXPECT_DEATH_IF_SUPPORTED compiles with a certain // parameter iff EXPECT_DEATH compiles with it. // regex - A regex that a macro such as EXPECT_DEATH would use to test // the output of statement. This parameter has to be // compiled but not evaluated by this macro, to ensure that // this macro only accepts expressions that a macro such as // EXPECT_DEATH would accept. // terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED // and a return statement for ASSERT_DEATH_IF_SUPPORTED. // This ensures that ASSERT_DEATH_IF_SUPPORTED will not // compile inside functions where ASSERT_DEATH doesn't // compile. // // The branch that has an always false condition is used to ensure that // statement and regex are compiled (and thus syntactically correct) but // never executed. The unreachable code macro protects the terminator // statement from generating an 'unreachable code' warning in case // statement unconditionally returns or throws. The Message constructor at // the end allows the syntax of streaming additional messages into the // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. # define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ GTEST_LOG_(WARNING) \ << "Death tests are not supported on this platform.\n" \ << "Statement '" #statement "' cannot be verified."; \ } else if (::testing::internal::AlwaysFalse()) { \ ::testing::internal::RE::PartialMatch(".*", (regex)); \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ terminator; \ } else \ ::testing::Message()
+ show +
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
#endif // GTEST_HAS_DEATH_TEST } // namespace internal } // namespace testing #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ namespace testing {
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
int line_; int index_; int write_fd_; GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); }; // Returns a newly created InternalRunDeathTestFlag object with fields // initialized from the GTEST_FLAG(internal_run_death_test) flag if // the flag is specified; otherwise returns NULL.
+ show +
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); #else // GTEST_HAS_DEATH_TEST // This macro is used for implementing macros such as // EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where // death tests are not supported. Those macros must compile on such systems // iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on // systems that support death tests. This allows one to write such a macro // on a system that does not support death tests and be sure that it will // compile on a death-test supporting system. // // Parameters: // statement - A statement that a macro such as EXPECT_DEATH would test // for program termination. This macro has to make sure this // statement is compiled but not executed, to ensure that // EXPECT_DEATH_IF_SUPPORTED compiles with a certain // parameter iff EXPECT_DEATH compiles with it. // regex - A regex that a macro such as EXPECT_DEATH would use to test // the output of statement. This parameter has to be // compiled but not evaluated by this macro, to ensure that // this macro only accepts expressions that a macro such as // EXPECT_DEATH would accept. // terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED // and a return statement for ASSERT_DEATH_IF_SUPPORTED. // This ensures that ASSERT_DEATH_IF_SUPPORTED will not // compile inside functions where ASSERT_DEATH doesn't // compile. // // The branch that has an always false condition is used to ensure that // statement and regex are compiled (and thus syntactically correct) but // never executed. The unreachable code macro protects the terminator // statement from generating an 'unreachable code' warning in case // statement unconditionally returns or throws. The Message constructor at // the end allows the syntax of streaming additional messages into the // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. # define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ GTEST_LOG_(WARNING) \ << "Death tests are not supported on this platform.\n" \ << "Statement '" #statement "' cannot be verified."; \ } else if (::testing::internal::AlwaysFalse()) { \ ::testing::internal::RE::PartialMatch(".*", (regex)); \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ terminator; \ } else \ ::testing::Message()
+ show +
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
#endif // GTEST_HAS_DEATH_TEST } // namespace internal } // namespace testing #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ namespace testing {

[CVE-2020-0478_1.diff] gtest-port.h #16
-# if GTEST_OS_LINUX && !defined(__ia64__) -# if GTEST_OS_LINUX_ANDROID -// On Android, clone() is only available on ARM starting with Gingerbread. -# if defined(__arm__) && __ANDROID_API__ >= 9 -# define GTEST_HAS_CLONE 1 -# else -# define GTEST_HAS_CLONE 0 -# endif -# else -# define GTEST_HAS_CLONE 1 -# endif -# else -# define GTEST_HAS_CLONE 0 -# endif // GTEST_OS_LINUX && !defined(__ia64__) +#if GTEST_OS_LINUX && !defined(__ia64__) +#if GTEST_OS_LINUX_ANDROID +// On Android, clone() became available at different API levels for each 32-bit +// architecture. +#if defined(__LP64__) || (defined(__arm__) && __ANDROID_API__ >= 9) || \ + (defined(__mips__) && __ANDROID_API__ >= 12) || \ + (defined(__i386__) && __ANDROID_API__ >= 17) +#define GTEST_HAS_CLONE 1 +#else +#define GTEST_HAS_CLONE 0 +#endif +#else +#define GTEST_HAS_CLONE 1 +#endif +#else +#define GTEST_HAS_CLONE 0 +#endif // GTEST_OS_LINUX && !defined(__ia64__)
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
748
749
750
751
752
753
754
755
756
757
#endif // GTEST_HAS_TR1_TUPLE // Determines whether clone(2) is supported. // Usually it will only be available on Linux, excluding // Linux on the Itanium architecture. // Also see http://linux.die.net/man/2/clone. #ifndef GTEST_HAS_CLONE // The user didn't tell us, so we need to figure it out.
+ show +
758
759
760
761
762
763
764
765
766
767
768
769
770
771
# if GTEST_OS_LINUX && !defined(__ia64__) # if GTEST_OS_LINUX_ANDROID // On Android, clone() is only available on ARM starting with Gingerbread. # if defined(__arm__) && __ANDROID_API__ >= 9 # define GTEST_HAS_CLONE 1 # else # define GTEST_HAS_CLONE 0 # endif # else # define GTEST_HAS_CLONE 1 # endif # else # define GTEST_HAS_CLONE 0 # endif // GTEST_OS_LINUX && !defined(__ia64__)
+ show +
772
773
774
775
776
777
778
779
780
781
#endif // GTEST_HAS_CLONE // Determines whether to support stream redirection. This is used to test // output correctness and to implement death tests. #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || \ GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
#endif // GTEST_HAS_TR1_TUPLE // Determines whether clone(2) is supported. // Usually it will only be available on Linux, excluding // Linux on the Itanium architecture. // Also see http://linux.die.net/man/2/clone. #ifndef GTEST_HAS_CLONE // The user didn't tell us, so we need to figure it out.
+ show +
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
# if GTEST_OS_LINUX && !defined(__ia64__) # if GTEST_OS_LINUX_ANDROID // On Android, clone() is only available on ARM starting with Gingerbread. # if defined(__arm__) && __ANDROID_API__ >= 9 # define GTEST_HAS_CLONE 1 # else # define GTEST_HAS_CLONE 0 # endif # else # define GTEST_HAS_CLONE 1 # endif # else # define GTEST_HAS_CLONE 0 # endif // GTEST_OS_LINUX && !defined(__ia64__)
+ show +
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
#endif // GTEST_HAS_CLONE // Determines whether to support stream redirection. This is used to test // output correctness and to implement death tests. #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || \ GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
#endif // GTEST_HAS_TR1_TUPLE // Determines whether clone(2) is supported. // Usually it will only be available on Linux, excluding // Linux on the Itanium architecture. // Also see http://linux.die.net/man/2/clone. #ifndef GTEST_HAS_CLONE // The user didn't tell us, so we need to figure it out.
+ show +
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
# if GTEST_OS_LINUX && !defined(__ia64__) # if GTEST_OS_LINUX_ANDROID // On Android, clone() is only available on ARM starting with Gingerbread. # if defined(__arm__) && __ANDROID_API__ >= 9 # define GTEST_HAS_CLONE 1 # else # define GTEST_HAS_CLONE 0 # endif # else # define GTEST_HAS_CLONE 1 # endif # else # define GTEST_HAS_CLONE 0 # endif // GTEST_OS_LINUX && !defined(__ia64__)
+ show +
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
#endif // GTEST_HAS_CLONE // Determines whether to support stream redirection. This is used to test // output correctness and to implement death tests. #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN # define GTEST_HAS_STREAM_REDIRECTION 0

[CVE-2020-0478_1.diff] gtest-port.h #32
- nanosleep(&time, NULL); + nanosleep(&time, nullptr); -# endif // GTEST_HAS_PTHREAD +#endif // GTEST_HAS_PTHREAD -# if GTEST_HAS_NOTIFICATION_ +#if GTEST_HAS_NOTIFICATION_ -# elif GTEST_HAS_PTHREAD +#elif GTEST_HAS_PTHREAD
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
#if GTEST_IS_THREADSAFE # if GTEST_HAS_PTHREAD // Sleeps for (roughly) n milliseconds. This function is only for testing // Google Test's own constructs. Don't use it in user tests, either // directly or indirectly. inline void SleepMilliseconds(int n) { const timespec time = { 0, // 0 seconds. n * 1000L * 1000L, // And n ms. };
+ show +
1462
1463
1464
1465
1466
1467
1468
1469
1470
nanosleep(&time, NULL); } # endif // GTEST_HAS_PTHREAD # if GTEST_HAS_NOTIFICATION_ // Notification has already been imported into the namespace. // Nothing to do here. # elif GTEST_HAS_PTHREAD
+ show +
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
// Allows a controller thread to pause execution of newly created // threads until notified. Instances of this class must be created // and destroyed in the controller thread. // // This class is only for testing Google Test's own constructs. Do not // use it in user tests, either directly or indirectly. class Notification { public: Notification() : notified_(false) { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
#if GTEST_IS_THREADSAFE # if GTEST_HAS_PTHREAD // Sleeps for (roughly) n milliseconds. This function is only for testing // Google Test's own constructs. Don't use it in user tests, either // directly or indirectly. inline void SleepMilliseconds(int n) { const timespec time = { 0, // 0 seconds. n * 1000L * 1000L, // And n ms. };
+ show +
2728
2729
2730
2731
2732
2733
2734
2735
2736
nanosleep(&time, NULL); } # endif // GTEST_HAS_PTHREAD # if GTEST_HAS_NOTIFICATION_ // Notification has already been imported into the namespace. // Nothing to do here. # elif GTEST_HAS_PTHREAD
+ show +
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
// Allows a controller thread to pause execution of newly created // threads until notified. Instances of this class must be created // and destroyed in the controller thread. // // This class is only for testing Google Test's own constructs. Do not // use it in user tests, either directly or indirectly. class Notification { public: Notification() : notified_(false) { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-port.h
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
#if GTEST_IS_THREADSAFE # if GTEST_HAS_PTHREAD // Sleeps for (roughly) n milliseconds. This function is only for testing // Google Test's own constructs. Don't use it in user tests, either // directly or indirectly. inline void SleepMilliseconds(int n) { const timespec time = { 0, // 0 seconds. n * 1000L * 1000L, // And n ms. };
+ show +
1586
1587
1588
1589
1590
1591
1592
1593
1594
nanosleep(&time, NULL); } # endif // GTEST_HAS_PTHREAD # if GTEST_HAS_NOTIFICATION_ // Notification has already been imported into the namespace. // Nothing to do here. # elif GTEST_HAS_PTHREAD
+ show +
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
// Allows a controller thread to pause execution of newly created // threads until notified. Instances of this class must be created // and destroyed in the controller thread. // // This class is only for testing Google Test's own constructs. Do not // use it in user tests, either directly or indirectly. class Notification { public: Notification() : notified_(false) { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));

[CVE-2020-0470_1.diff] gtest-port.h #16
-# if GTEST_OS_LINUX && !defined(__ia64__) -# if GTEST_OS_LINUX_ANDROID -// On Android, clone() is only available on ARM starting with Gingerbread. -# if defined(__arm__) && __ANDROID_API__ >= 9 -# define GTEST_HAS_CLONE 1 -# else -# define GTEST_HAS_CLONE 0 -# endif -# else -# define GTEST_HAS_CLONE 1 -# endif -# else -# define GTEST_HAS_CLONE 0 -# endif // GTEST_OS_LINUX && !defined(__ia64__) +#if GTEST_OS_LINUX && !defined(__ia64__) +#if GTEST_OS_LINUX_ANDROID +// On Android, clone() became available at different API levels for each 32-bit +// architecture. +#if defined(__LP64__) || (defined(__arm__) && __ANDROID_API__ >= 9) || \ + (defined(__mips__) && __ANDROID_API__ >= 12) || \ + (defined(__i386__) && __ANDROID_API__ >= 17) +#define GTEST_HAS_CLONE 1 +#else +#define GTEST_HAS_CLONE 0 +#endif +#else +#define GTEST_HAS_CLONE 1 +#endif +#else +#define GTEST_HAS_CLONE 0 +#endif // GTEST_OS_LINUX && !defined(__ia64__)
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
748
749
750
751
752
753
754
755
756
757
#endif // GTEST_HAS_TR1_TUPLE // Determines whether clone(2) is supported. // Usually it will only be available on Linux, excluding // Linux on the Itanium architecture. // Also see http://linux.die.net/man/2/clone. #ifndef GTEST_HAS_CLONE // The user didn't tell us, so we need to figure it out.
+ show +
758
759
760
761
762
763
764
765
766
767
768
769
770
771
# if GTEST_OS_LINUX && !defined(__ia64__) # if GTEST_OS_LINUX_ANDROID // On Android, clone() is only available on ARM starting with Gingerbread. # if defined(__arm__) && __ANDROID_API__ >= 9 # define GTEST_HAS_CLONE 1 # else # define GTEST_HAS_CLONE 0 # endif # else # define GTEST_HAS_CLONE 1 # endif # else # define GTEST_HAS_CLONE 0 # endif // GTEST_OS_LINUX && !defined(__ia64__)
+ show +
772
773
774
775
776
777
778
779
780
781
#endif // GTEST_HAS_CLONE // Determines whether to support stream redirection. This is used to test // output correctness and to implement death tests. #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || \ GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
#endif // GTEST_HAS_TR1_TUPLE // Determines whether clone(2) is supported. // Usually it will only be available on Linux, excluding // Linux on the Itanium architecture. // Also see http://linux.die.net/man/2/clone. #ifndef GTEST_HAS_CLONE // The user didn't tell us, so we need to figure it out.
+ show +
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
# if GTEST_OS_LINUX && !defined(__ia64__) # if GTEST_OS_LINUX_ANDROID // On Android, clone() is only available on ARM starting with Gingerbread. # if defined(__arm__) && __ANDROID_API__ >= 9 # define GTEST_HAS_CLONE 1 # else # define GTEST_HAS_CLONE 0 # endif # else # define GTEST_HAS_CLONE 1 # endif # else # define GTEST_HAS_CLONE 0 # endif // GTEST_OS_LINUX && !defined(__ia64__)
+ show +
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
#endif // GTEST_HAS_CLONE // Determines whether to support stream redirection. This is used to test // output correctness and to implement death tests. #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || \ GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
/media/esteban/ACOS/dotOS/external/fmtlib/test/gtest/gtest.h
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
#endif // GTEST_HAS_TR1_TUPLE // Determines whether clone(2) is supported. // Usually it will only be available on Linux, excluding // Linux on the Itanium architecture. // Also see http://linux.die.net/man/2/clone. #ifndef GTEST_HAS_CLONE // The user didn't tell us, so we need to figure it out.
+ show +
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
# if GTEST_OS_LINUX && !defined(__ia64__) # if GTEST_OS_LINUX_ANDROID // On Android, clone() is only available on ARM starting with Gingerbread. # if defined(__arm__) && __ANDROID_API__ >= 9 # define GTEST_HAS_CLONE 1 # else # define GTEST_HAS_CLONE 0 # endif # else # define GTEST_HAS_CLONE 1 # endif # else # define GTEST_HAS_CLONE 0 # endif // GTEST_OS_LINUX && !defined(__ia64__)
+ show +
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
#endif // GTEST_HAS_CLONE // Determines whether to support stream redirection. This is used to test // output correctness and to implement death tests. #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN # define GTEST_HAS_STREAM_REDIRECTION 0

[CVE-2020-0470_1.diff] gtest-port.h #32
- nanosleep(&time, NULL); + nanosleep(&time, nullptr); -# endif // GTEST_HAS_PTHREAD +#endif // GTEST_HAS_PTHREAD -# if GTEST_HAS_NOTIFICATION_ +#if GTEST_HAS_NOTIFICATION_ -# elif GTEST_HAS_PTHREAD +#elif GTEST_HAS_PTHREAD
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
#if GTEST_IS_THREADSAFE # if GTEST_HAS_PTHREAD // Sleeps for (roughly) n milliseconds. This function is only for testing // Google Test's own constructs. Don't use it in user tests, either // directly or indirectly. inline void SleepMilliseconds(int n) { const timespec time = { 0, // 0 seconds. n * 1000L * 1000L, // And n ms. };
+ show +
1462
1463
1464
1465
1466
1467
1468
1469
1470
nanosleep(&time, NULL); } # endif // GTEST_HAS_PTHREAD # if GTEST_HAS_NOTIFICATION_ // Notification has already been imported into the namespace. // Nothing to do here. # elif GTEST_HAS_PTHREAD
+ show +
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
// Allows a controller thread to pause execution of newly created // threads until notified. Instances of this class must be created // and destroyed in the controller thread. // // This class is only for testing Google Test's own constructs. Do not // use it in user tests, either directly or indirectly. class Notification { public: Notification() : notified_(false) { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
#if GTEST_IS_THREADSAFE # if GTEST_HAS_PTHREAD // Sleeps for (roughly) n milliseconds. This function is only for testing // Google Test's own constructs. Don't use it in user tests, either // directly or indirectly. inline void SleepMilliseconds(int n) { const timespec time = { 0, // 0 seconds. n * 1000L * 1000L, // And n ms. };
+ show +
2728
2729
2730
2731
2732
2733
2734
2735
2736
nanosleep(&time, NULL); } # endif // GTEST_HAS_PTHREAD # if GTEST_HAS_NOTIFICATION_ // Notification has already been imported into the namespace. // Nothing to do here. # elif GTEST_HAS_PTHREAD
+ show +
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
// Allows a controller thread to pause execution of newly created // threads until notified. Instances of this class must be created // and destroyed in the controller thread. // // This class is only for testing Google Test's own constructs. Do not // use it in user tests, either directly or indirectly. class Notification { public: Notification() : notified_(false) { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-port.h
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
#if GTEST_IS_THREADSAFE # if GTEST_HAS_PTHREAD // Sleeps for (roughly) n milliseconds. This function is only for testing // Google Test's own constructs. Don't use it in user tests, either // directly or indirectly. inline void SleepMilliseconds(int n) { const timespec time = { 0, // 0 seconds. n * 1000L * 1000L, // And n ms. };
+ show +
1586
1587
1588
1589
1590
1591
1592
1593
1594
nanosleep(&time, NULL); } # endif // GTEST_HAS_PTHREAD # if GTEST_HAS_NOTIFICATION_ // Notification has already been imported into the namespace. // Nothing to do here. # elif GTEST_HAS_PTHREAD
+ show +
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
// Allows a controller thread to pause execution of newly created // threads until notified. Instances of this class must be created // and destroyed in the controller thread. // // This class is only for testing Google Test's own constructs. Do not // use it in user tests, either directly or indirectly. class Notification { public: Notification() : notified_(false) { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));

[CVE-2020-0478_1.diff] gtest-internal.h #20
- // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, + // specified in INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, TestSuite, - static bool Register(const char* prefix, - CodeLocation code_location, - const char* case_name, const char* test_names, - int index) { + static bool Register(const char *prefix, const CodeLocation &code_location, + const char *case_name, const char *test_names, int index, + const std::vector<std::string> &type_names = + GenerateNames<DefaultNameGenerator, Types>()) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-internal.h
619
620
621
622
623
624
625
626
627
628
// // Implementation note: The GTEST_TEMPLATE_ macro declares a template // template parameter. It's defined in gtest-type-util.h. template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types> class TypeParameterizedTest { public: // 'index' is the index of the test in the type list 'Types' // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, // Types). Valid values for 'index' are [0, N - 1] where N is the // length of Types.
+ show +
629
630
631
632
static bool Register(const char* prefix, CodeLocation code_location, const char* case_name, const char* test_names, int index) {
+ show +
633
634
635
636
637
638
639
640
641
642
typedef typename Types::Head Type; typedef Fixture<Type> FixtureClass; typedef typename GTEST_BIND_(TestSel, Type) TestClass; // First, registers the first type-parameterized test in the type // list. MakeAndRegisterTestInfo( (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/" + StreamableToString(index)).c_str(), StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
// // Implementation note: The GTEST_TEMPLATE_ macro declares a template // template parameter. It's defined in gtest-type-util.h. template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types> class TypeParameterizedTest { public: // 'index' is the index of the test in the type list 'Types' // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, // Types). Valid values for 'index' are [0, N - 1] where N is the // length of Types.
+ show +
8364
8365
8366
8367
static bool Register(const char* prefix, CodeLocation code_location, const char* case_name, const char* test_names, int index) {
+ show +
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
typedef typename Types::Head Type; typedef Fixture<Type> FixtureClass; typedef typename GTEST_BIND_(TestSel, Type) TestClass; // First, registers the first type-parameterized test in the type // list. MakeAndRegisterTestInfo( (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/" + StreamableToString(index)).c_str(), StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),

[CVE-2020-0470_1.diff] gtest-internal.h #20
- // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, + // specified in INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, TestSuite, - static bool Register(const char* prefix, - CodeLocation code_location, - const char* case_name, const char* test_names, - int index) { + static bool Register(const char *prefix, const CodeLocation &code_location, + const char *case_name, const char *test_names, int index, + const std::vector<std::string> &type_names = + GenerateNames<DefaultNameGenerator, Types>()) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-internal.h
619
620
621
622
623
624
625
626
627
628
// // Implementation note: The GTEST_TEMPLATE_ macro declares a template // template parameter. It's defined in gtest-type-util.h. template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types> class TypeParameterizedTest { public: // 'index' is the index of the test in the type list 'Types' // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, // Types). Valid values for 'index' are [0, N - 1] where N is the // length of Types.
+ show +
629
630
631
632
static bool Register(const char* prefix, CodeLocation code_location, const char* case_name, const char* test_names, int index) {
+ show +
633
634
635
636
637
638
639
640
641
642
typedef typename Types::Head Type; typedef Fixture<Type> FixtureClass; typedef typename GTEST_BIND_(TestSel, Type) TestClass; // First, registers the first type-parameterized test in the type // list. MakeAndRegisterTestInfo( (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/" + StreamableToString(index)).c_str(), StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
// // Implementation note: The GTEST_TEMPLATE_ macro declares a template // template parameter. It's defined in gtest-type-util.h. template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types> class TypeParameterizedTest { public: // 'index' is the index of the test in the type list 'Types' // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, // Types). Valid values for 'index' are [0, N - 1] where N is the // length of Types.
+ show +
8364
8365
8366
8367
static bool Register(const char* prefix, CodeLocation code_location, const char* case_name, const char* test_names, int index) {
+ show +
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
typedef typename Types::Head Type; typedef Fixture<Type> FixtureClass; typedef typename GTEST_BIND_(TestSel, Type) TestClass; // First, registers the first type-parameterized test in the type // list. MakeAndRegisterTestInfo( (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/" + StreamableToString(index)).c_str(), StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),

[CVE-2020-0478_1.diff] gtest-param-util.h #3
-// +// Utility Functions + -// fixture class for the same test case. This may happen when +// fixture class for the same test suite. This may happen when -GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, - CodeLocation code_location); +GTEST_API_ void ReportInvalidTestSuiteType(const char *test_suite_name, + CodeLocation code_location); -template <typename> class ParamGeneratorInterface; -template <typename> class ParamGenerator; +template <typename> +class ParamGeneratorInterface; +template <typename> +class ParamGenerator;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-param-util.h
74
75
76
77
78
79
80
81
82
83
}; namespace internal { // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Outputs a message explaining invalid registration of different // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces.
+ show +
84
85
86
87
88
GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, CodeLocation code_location); template <typename> class ParamGeneratorInterface; template <typename> class ParamGenerator;
+ show +
89
90
91
92
93
94
95
96
97
98
// Interface for iterating over elements provided by an implementation // of ParamGeneratorInterface<T>. template <typename T> class ParamIteratorInterface { public: virtual ~ParamIteratorInterface() {} // A pointer to the base generator instance. // Used only for the purposes of iterator comparison // to make sure that two iterators belong to the same generator.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
}; namespace internal { // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Outputs a message explaining invalid registration of different // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces.
+ show +
11127
11128
11129
11130
11131
GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, CodeLocation code_location); template <typename> class ParamGeneratorInterface; template <typename> class ParamGenerator;
+ show +
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
// Interface for iterating over elements provided by an implementation // of ParamGeneratorInterface<T>. template <typename T> class ParamIteratorInterface { public: virtual ~ParamIteratorInterface() {} // A pointer to the base generator instance. // Used only for the purposes of iterator comparison // to make sure that two iterators belong to the same generator.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-param-util.h
70
71
72
73
74
75
76
77
78
79
}; namespace internal { // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Outputs a message explaining invalid registration of different // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces.
+ show +
80
81
82
83
84
GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, CodeLocation code_location); template <typename> class ParamGeneratorInterface; template <typename> class ParamGenerator;
+ show +
85
86
87
88
89
90
91
92
93
94
// Interface for iterating over elements provided by an implementation // of ParamGeneratorInterface<T>. template <typename T> class ParamIteratorInterface { public: virtual ~ParamIteratorInterface() {} // A pointer to the base generator instance. // Used only for the purposes of iterator comparison // to make sure that two iterators belong to the same generator.

[CVE-2020-0470_1.diff] gtest-param-util.h #3
-// +// Utility Functions + -// fixture class for the same test case. This may happen when +// fixture class for the same test suite. This may happen when -GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, - CodeLocation code_location); +GTEST_API_ void ReportInvalidTestSuiteType(const char *test_suite_name, + CodeLocation code_location); -template <typename> class ParamGeneratorInterface; -template <typename> class ParamGenerator; +template <typename> +class ParamGeneratorInterface; +template <typename> +class ParamGenerator;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/gtest-param-util.h
74
75
76
77
78
79
80
81
82
83
}; namespace internal { // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Outputs a message explaining invalid registration of different // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces.
+ show +
84
85
86
87
88
GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, CodeLocation code_location); template <typename> class ParamGeneratorInterface; template <typename> class ParamGenerator;
+ show +
89
90
91
92
93
94
95
96
97
98
// Interface for iterating over elements provided by an implementation // of ParamGeneratorInterface<T>. template <typename T> class ParamIteratorInterface { public: virtual ~ParamIteratorInterface() {} // A pointer to the base generator instance. // Used only for the purposes of iterator comparison // to make sure that two iterators belong to the same generator.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gtest/gtest.h
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
}; namespace internal { // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Outputs a message explaining invalid registration of different // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces.
+ show +
11127
11128
11129
11130
11131
GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, CodeLocation code_location); template <typename> class ParamGeneratorInterface; template <typename> class ParamGenerator;
+ show +
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
// Interface for iterating over elements provided by an implementation // of ParamGeneratorInterface<T>. template <typename T> class ParamIteratorInterface { public: virtual ~ParamIteratorInterface() {} // A pointer to the base generator instance. // Used only for the purposes of iterator comparison // to make sure that two iterators belong to the same generator.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/include/gtest/internal/gtest-param-util.h
70
71
72
73
74
75
76
77
78
79
}; namespace internal { // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Outputs a message explaining invalid registration of different // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces.
+ show +
80
81
82
83
84
GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, CodeLocation code_location); template <typename> class ParamGeneratorInterface; template <typename> class ParamGenerator;
+ show +
85
86
87
88
89
90
91
92
93
94
// Interface for iterating over elements provided by an implementation // of ParamGeneratorInterface<T>. template <typename T> class ParamIteratorInterface { public: virtual ~ParamIteratorInterface() {} // A pointer to the base generator instance. // Used only for the purposes of iterator comparison // to make sure that two iterators belong to the same generator.

[CVE-2020-0478_1.diff] gtest-port.cc #9
+#elif GTEST_OS_FUCHSIA + +size_t GetThreadCount() { + int dummy_buffer; + size_t avail; + zx_status_t status = + zx_object_get_info(zx_process_self(), ZX_INFO_PROCESS_THREADS, + &dummy_buffer, 0, nullptr, &avail); + if (status == ZX_OK) { + return avail; + } else { + return 0; + } +} + -void SleepMilliseconds(int n) { - ::Sleep(n); -} +void SleepMilliseconds(int n) { ::Sleep(static_cast<DWORD>(n)); } -AutoHandle::AutoHandle() - : handle_(INVALID_HANDLE_VALUE) {} +AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} -AutoHandle::AutoHandle(Handle handle) - : handle_(handle) {} +AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} -AutoHandle::~AutoHandle() { - Reset(); -} +AutoHandle::~AutoHandle() { Reset(); } -AutoHandle::Handle AutoHandle::Get() const { - return handle_; -} +AutoHandle::Handle AutoHandle::Get() const { return handle_; } -void AutoHandle::Reset() { - Reset(INVALID_HANDLE_VALUE); -} +void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE); }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
169
170
171
172
173
174
175
176
177
178
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
199
200
201
202
203
204
205
206
207
208
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-port.cc
271
272
273
274
275
276
277
278
279
280
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
301
302
303
304
305
306
307
308
309
310
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-port.cc
184
185
186
187
188
189
190
191
192
193
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
214
215
216
217
218
219
220
221
222
223
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {

[CVE-2020-0478_1.diff] gtest-port.cc #44
-GTEST_DISABLE_MSC_WARNINGS_POP_() +GTEST_DISABLE_MSC_DEPRECATED_POP_() -static CapturedStream* g_captured_stderr = NULL; -static CapturedStream* g_captured_stdout = NULL; +static CapturedStream *g_captured_stderr = nullptr; +static CapturedStream *g_captured_stdout = nullptr; -void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { - if (*stream != NULL) { +static void CaptureStream(int fd, const char *stream_name, + CapturedStream **stream) { + if (*stream != nullptr) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
private: const int fd_; // A stream to capture. int uncaptured_fd_; // Name of the temporary file holding the stderr output. ::std::string filename_; GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); };
+ show +
1012
1013
1014
1015
1016
1017
1018
1019
GTEST_DISABLE_MSC_WARNINGS_POP_() static CapturedStream* g_captured_stderr = NULL; static CapturedStream* g_captured_stdout = NULL; // Starts capturing an output stream (stdout/stderr). void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { if (*stream != NULL) {
+ show +
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
GTEST_LOG_(FATAL) << "Only one " << stream_name << " capturer can exist at a time."; } *stream = new CapturedStream(fd); } // Stops capturing the output stream and returns the captured string. std::string GetCapturedStream(CapturedStream** captured_stream) { const std::string content = (*captured_stream)->GetCapturedString();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
private: const int fd_; // A stream to capture. int uncaptured_fd_; // Name of the temporary file holding the stderr output. ::std::string filename_; GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); };
+ show +
9561
9562
9563
9564
9565
9566
9567
9568
GTEST_DISABLE_MSC_WARNINGS_POP_() static CapturedStream* g_captured_stderr = NULL; static CapturedStream* g_captured_stdout = NULL; // Starts capturing an output stream (stdout/stderr). void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { if (*stream != NULL) {
+ show +
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
GTEST_LOG_(FATAL) << "Only one " << stream_name << " capturer can exist at a time."; } *stream = new CapturedStream(fd); } // Stops capturing the output stream and returns the captured string. std::string GetCapturedStream(CapturedStream** captured_stream) { const std::string content = (*captured_stream)->GetCapturedString();

[CVE-2020-0478_1.diff] gtest-port.cc #48
+static const std::vector<std::string> *g_injected_test_argvs = + nullptr; // Owned. -static const ::std::vector<testing::internal::string>* g_injected_test_argvs = - NULL; // Owned. - -void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) { - if (g_injected_test_argvs != argvs) - delete g_injected_test_argvs; - g_injected_test_argvs = argvs; -} - -const ::std::vector<testing::internal::string>& GetInjectableArgvs() { - if (g_injected_test_argvs != NULL) { +std::vector<std::string> GetInjectableArgvs() { + if (g_injected_test_argvs != nullptr) { + +void SetInjectableArgvs(const std::vector<std::string> *new_argvs) { + if (g_injected_test_argvs != new_argvs) delete g_injected_test_argvs; + g_injected_test_argvs = new_argvs; +} + +void SetInjectableArgvs(const std::vector<std::string> &new_argvs) { + SetInjectableArgvs( + new std::vector<std::string>(new_argvs.begin(), new_argvs.end())); +} + +void ClearInjectableArgvs() { + delete g_injected_test_argvs; + g_injected_test_argvs = nullptr; +}
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
} while (bytes_last_read > 0 && bytes_read < file_size); const std::string content(buffer, bytes_read); delete[] buffer; return content; } #if GTEST_HAS_DEATH_TEST
+ show +
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
static const ::std::vector<testing::internal::string>* g_injected_test_argvs = NULL; // Owned. void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) { if (g_injected_test_argvs != argvs) delete g_injected_test_argvs; g_injected_test_argvs = argvs; } const ::std::vector<testing::internal::string>& GetInjectableArgvs() { if (g_injected_test_argvs != NULL) {
+ show +
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
return *g_injected_test_argvs; } return GetArgvs(); } #endif // GTEST_HAS_DEATH_TEST #if GTEST_OS_WINDOWS_MOBILE namespace posix { void Abort() { DebugBreak();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
} while (bytes_last_read > 0 && bytes_read < file_size); const std::string content(buffer, bytes_read); delete[] buffer; return content; } #if GTEST_HAS_DEATH_TEST
+ show +
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
static const ::std::vector<testing::internal::string>* g_injected_test_argvs = NULL; // Owned. void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) { if (g_injected_test_argvs != argvs) delete g_injected_test_argvs; g_injected_test_argvs = argvs; } const ::std::vector<testing::internal::string>& GetInjectableArgvs() { if (g_injected_test_argvs != NULL) {
+ show +
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
return *g_injected_test_argvs; } return GetArgvs(); } #endif // GTEST_HAS_DEATH_TEST #if GTEST_OS_WINDOWS_MOBILE namespace posix { void Abort() { DebugBreak();

[CVE-2020-0470_1.diff] gtest-port.cc #9
+#elif GTEST_OS_FUCHSIA + +size_t GetThreadCount() { + int dummy_buffer; + size_t avail; + zx_status_t status = + zx_object_get_info(zx_process_self(), ZX_INFO_PROCESS_THREADS, + &dummy_buffer, 0, nullptr, &avail); + if (status == ZX_OK) { + return avail; + } else { + return 0; + } +} + -void SleepMilliseconds(int n) { - ::Sleep(n); -} +void SleepMilliseconds(int n) { ::Sleep(static_cast<DWORD>(n)); } -AutoHandle::AutoHandle() - : handle_(INVALID_HANDLE_VALUE) {} +AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} -AutoHandle::AutoHandle(Handle handle) - : handle_(handle) {} +AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} -AutoHandle::~AutoHandle() { - Reset(); -} +AutoHandle::~AutoHandle() { Reset(); } -AutoHandle::Handle AutoHandle::Get() const { - return handle_; -} +AutoHandle::Handle AutoHandle::Get() const { return handle_; } -void AutoHandle::Reset() { - Reset(INVALID_HANDLE_VALUE); -} +void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE); }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
169
170
171
172
173
174
175
176
177
178
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
199
200
201
202
203
204
205
206
207
208
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-port.cc
271
272
273
274
275
276
277
278
279
280
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
301
302
303
304
305
306
307
308
309
310
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-port.cc
184
185
186
187
188
189
190
191
192
193
size_t GetThreadCount() { // There's no portable way to detect the number of threads, so we just // return 0 to indicate that we cannot detect it. return 0; } #endif // GTEST_OS_LINUX #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+ show +
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
void SleepMilliseconds(int n) { ::Sleep(n); } AutoHandle::AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} AutoHandle::AutoHandle(Handle handle) : handle_(handle) {} AutoHandle::~AutoHandle() { Reset(); } AutoHandle::Handle AutoHandle::Get() const { return handle_; } void AutoHandle::Reset() { Reset(INVALID_HANDLE_VALUE);
+ show +
214
215
216
217
218
219
220
221
222
223
} void AutoHandle::Reset(HANDLE handle) { // Resetting with the same handle we already own is invalid. if (handle_ != handle) { if (IsCloseable()) { ::CloseHandle(handle_); } handle_ = handle; } else {

[CVE-2020-0470_1.diff] gtest-port.cc #44
-GTEST_DISABLE_MSC_WARNINGS_POP_() +GTEST_DISABLE_MSC_DEPRECATED_POP_() -static CapturedStream* g_captured_stderr = NULL; -static CapturedStream* g_captured_stdout = NULL; +static CapturedStream *g_captured_stderr = nullptr; +static CapturedStream *g_captured_stdout = nullptr; -void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { - if (*stream != NULL) { +static void CaptureStream(int fd, const char *stream_name, + CapturedStream **stream) { + if (*stream != nullptr) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
private: const int fd_; // A stream to capture. int uncaptured_fd_; // Name of the temporary file holding the stderr output. ::std::string filename_; GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); };
+ show +
1012
1013
1014
1015
1016
1017
1018
1019
GTEST_DISABLE_MSC_WARNINGS_POP_() static CapturedStream* g_captured_stderr = NULL; static CapturedStream* g_captured_stdout = NULL; // Starts capturing an output stream (stdout/stderr). void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { if (*stream != NULL) {
+ show +
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
GTEST_LOG_(FATAL) << "Only one " << stream_name << " capturer can exist at a time."; } *stream = new CapturedStream(fd); } // Stops capturing the output stream and returns the captured string. std::string GetCapturedStream(CapturedStream** captured_stream) { const std::string content = (*captured_stream)->GetCapturedString();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
private: const int fd_; // A stream to capture. int uncaptured_fd_; // Name of the temporary file holding the stderr output. ::std::string filename_; GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); };
+ show +
9561
9562
9563
9564
9565
9566
9567
9568
GTEST_DISABLE_MSC_WARNINGS_POP_() static CapturedStream* g_captured_stderr = NULL; static CapturedStream* g_captured_stdout = NULL; // Starts capturing an output stream (stdout/stderr). void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { if (*stream != NULL) {
+ show +
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
GTEST_LOG_(FATAL) << "Only one " << stream_name << " capturer can exist at a time."; } *stream = new CapturedStream(fd); } // Stops capturing the output stream and returns the captured string. std::string GetCapturedStream(CapturedStream** captured_stream) { const std::string content = (*captured_stream)->GetCapturedString();

[CVE-2020-0470_1.diff] gtest-port.cc #48
+static const std::vector<std::string> *g_injected_test_argvs = + nullptr; // Owned. -static const ::std::vector<testing::internal::string>* g_injected_test_argvs = - NULL; // Owned. - -void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) { - if (g_injected_test_argvs != argvs) - delete g_injected_test_argvs; - g_injected_test_argvs = argvs; -} - -const ::std::vector<testing::internal::string>& GetInjectableArgvs() { - if (g_injected_test_argvs != NULL) { +std::vector<std::string> GetInjectableArgvs() { + if (g_injected_test_argvs != nullptr) { + +void SetInjectableArgvs(const std::vector<std::string> *new_argvs) { + if (g_injected_test_argvs != new_argvs) delete g_injected_test_argvs; + g_injected_test_argvs = new_argvs; +} + +void SetInjectableArgvs(const std::vector<std::string> &new_argvs) { + SetInjectableArgvs( + new std::vector<std::string>(new_argvs.begin(), new_argvs.end())); +} + +void ClearInjectableArgvs() { + delete g_injected_test_argvs; + g_injected_test_argvs = nullptr; +}
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-port.cc
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
} while (bytes_last_read > 0 && bytes_read < file_size); const std::string content(buffer, bytes_read); delete[] buffer; return content; } #if GTEST_HAS_DEATH_TEST
+ show +
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
static const ::std::vector<testing::internal::string>* g_injected_test_argvs = NULL; // Owned. void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) { if (g_injected_test_argvs != argvs) delete g_injected_test_argvs; g_injected_test_argvs = argvs; } const ::std::vector<testing::internal::string>& GetInjectableArgvs() { if (g_injected_test_argvs != NULL) {
+ show +
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
return *g_injected_test_argvs; } return GetArgvs(); } #endif // GTEST_HAS_DEATH_TEST #if GTEST_OS_WINDOWS_MOBILE namespace posix { void Abort() { DebugBreak();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
} while (bytes_last_read > 0 && bytes_read < file_size); const std::string content(buffer, bytes_read); delete[] buffer; return content; } #if GTEST_HAS_DEATH_TEST
+ show +
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
static const ::std::vector<testing::internal::string>* g_injected_test_argvs = NULL; // Owned. void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) { if (g_injected_test_argvs != argvs) delete g_injected_test_argvs; g_injected_test_argvs = argvs; } const ::std::vector<testing::internal::string>& GetInjectableArgvs() { if (g_injected_test_argvs != NULL) {
+ show +
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
return *g_injected_test_argvs; } return GetArgvs(); } #endif // GTEST_HAS_DEATH_TEST #if GTEST_OS_WINDOWS_MOBILE namespace posix { void Abort() { DebugBreak();

[CVE-2020-0478_1.diff] gtest-printers.cc #11
+ // Remember if any characters required hex escaping. + if (is_previous_hex) { + print_format = kHexEscape; + } + return print_format; -GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ -GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ -GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ -static void UniversalPrintCharArray( - const CharType* begin, size_t len, ostream* os) { +GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ + GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_ + GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void + UniversalPrintCharArray(const CharType *begin, size_t len, + ostream *os) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-printers.cc
273
274
275
276
277
278
279
280
281
282
*os << "\" " << kQuoteBegin; } is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; } *os << "\""; } // Prints a (const) char/wchar_t array of 'len' elements, starting at address // 'begin'. CharType must be either char or wchar_t. template <typename CharType>
+ show +
283
284
285
286
287
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void UniversalPrintCharArray( const CharType* begin, size_t len, ostream* os) {
+ show +
288
289
290
291
292
293
294
295
296
297
// The code // const char kFoo[] = "foo"; // generates an array of 4, not 3, elements, with the last one being '\0'. // // Therefore when printing a char array, we don't print the last element if // it's '\0', such that the output matches the string literal as it's // written in the source code. if (len > 0 && begin[len - 1] == '\0') { PrintCharsAsStringTo(begin, len - 1, os); return;
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
*os << "\" " << kQuoteBegin; } is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; } *os << "\""; } // Prints a (const) char/wchar_t array of 'len' elements, starting at address // 'begin'. CharType must be either char or wchar_t. template <typename CharType>
+ show +
10089
10090
10091
10092
10093
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void UniversalPrintCharArray( const CharType* begin, size_t len, ostream* os) {
+ show +
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
// The code // const char kFoo[] = "foo"; // generates an array of 4, not 3, elements, with the last one being '\0'. // // Therefore when printing a char array, we don't print the last element if // it's '\0', such that the output matches the string literal as it's // written in the source code. if (len > 0 && begin[len - 1] == '\0') { PrintCharsAsStringTo(begin, len - 1, os); return;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-printers.cc
282
283
284
285
286
287
288
289
290
291
print_format = kHexEscape; } } *os << "\""; return print_format; } // Prints a (const) char/wchar_t array of 'len' elements, starting at address // 'begin'. CharType must be either char or wchar_t. template <typename CharType>
+ show +
292
293
294
295
296
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void UniversalPrintCharArray( const CharType* begin, size_t len, ostream* os) {
+ show +
297
298
299
300
301
302
303
304
305
306
// The code // const char kFoo[] = "foo"; // generates an array of 4, not 3, elements, with the last one being '\0'. // // Therefore when printing a char array, we don't print the last element if // it's '\0', such that the output matches the string literal as it's // written in the source code. if (len > 0 && begin[len - 1] == '\0') { PrintCharsAsStringTo(begin, len - 1, os); return;

[CVE-2020-0470_1.diff] gtest-printers.cc #11
+ // Remember if any characters required hex escaping. + if (is_previous_hex) { + print_format = kHexEscape; + } + return print_format; -GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ -GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ -GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ -static void UniversalPrintCharArray( - const CharType* begin, size_t len, ostream* os) { +GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ + GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_ + GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void + UniversalPrintCharArray(const CharType *begin, size_t len, + ostream *os) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-printers.cc
273
274
275
276
277
278
279
280
281
282
*os << "\" " << kQuoteBegin; } is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; } *os << "\""; } // Prints a (const) char/wchar_t array of 'len' elements, starting at address // 'begin'. CharType must be either char or wchar_t. template <typename CharType>
+ show +
283
284
285
286
287
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void UniversalPrintCharArray( const CharType* begin, size_t len, ostream* os) {
+ show +
288
289
290
291
292
293
294
295
296
297
// The code // const char kFoo[] = "foo"; // generates an array of 4, not 3, elements, with the last one being '\0'. // // Therefore when printing a char array, we don't print the last element if // it's '\0', such that the output matches the string literal as it's // written in the source code. if (len > 0 && begin[len - 1] == '\0') { PrintCharsAsStringTo(begin, len - 1, os); return;
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
*os << "\" " << kQuoteBegin; } is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; } *os << "\""; } // Prints a (const) char/wchar_t array of 'len' elements, starting at address // 'begin'. CharType must be either char or wchar_t. template <typename CharType>
+ show +
10089
10090
10091
10092
10093
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void UniversalPrintCharArray( const CharType* begin, size_t len, ostream* os) {
+ show +
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
// The code // const char kFoo[] = "foo"; // generates an array of 4, not 3, elements, with the last one being '\0'. // // Therefore when printing a char array, we don't print the last element if // it's '\0', such that the output matches the string literal as it's // written in the source code. if (len > 0 && begin[len - 1] == '\0') { PrintCharsAsStringTo(begin, len - 1, os); return;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-printers.cc
282
283
284
285
286
287
288
289
290
291
print_format = kHexEscape; } } *os << "\""; return print_format; } // Prints a (const) char/wchar_t array of 'len' elements, starting at address // 'begin'. CharType must be either char or wchar_t. template <typename CharType>
+ show +
292
293
294
295
296
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ static void UniversalPrintCharArray( const CharType* begin, size_t len, ostream* os) {
+ show +
297
298
299
300
301
302
303
304
305
306
// The code // const char kFoo[] = "foo"; // generates an array of 4, not 3, elements, with the last one being '\0'. // // Therefore when printing a char array, we don't print the last element if // it's '\0', such that the output matches the string literal as it's // written in the source code. if (len > 0 && begin[len - 1] == '\0') { PrintCharsAsStringTo(begin, len - 1, os); return;

[CVE-2020-0478_1.diff] gtest-internal-inl.h #23
- // Returns true iff the unit test passed (i.e. all test cases passed). + // Returns true if and only if the unit test passed (i.e. all test suites + // passed). - // Returns true iff the unit test failed (i.e. some test case failed - // or something outside of all tests failed). + // Returns true if and only if the unit test failed (i.e. some test suite + // failed or something outside of all tests failed). - return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); + return failed_test_suite_count() > 0 || ad_hoc_test_result()->Failed(); - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - const TestCase* GetTestCase(int i) const { - const int index = GetElementOr(test_case_indices_, i, -1); - return index < 0 ? NULL : test_cases_[i]; + // Gets the i-th test suite among all the test suites. i can range from 0 to + // total_test_suite_count() - 1. If i is not in that range, returns NULL. + const TestSuite *GetTestSuite(int i) const { + const int index = GetElementOr(test_suite_indices_, i, -1); + return index < 0 ? nullptr : test_suites_[static_cast<size_t>(i)]; - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - TestCase* GetMutableTestCase(int i) { - const int index = GetElementOr(test_case_indices_, i, -1); - return index < 0 ? NULL : test_cases_[index]; + // Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + const TestCase *GetTestCase(int i) const { return GetTestSuite(i); } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + // Gets the i-th test suite among all the test suites. i can range from 0 to + // total_test_suite_count() - 1. If i is not in that range, returns NULL. + TestSuite *GetMutableSuiteCase(int i) { + const int index = GetElementOr(test_suite_indices_, i, -1); + return index < 0 ? nullptr : test_suites_[static_cast<size_t>(index)]; - TestEventListeners* listeners() { return &listeners_; } + TestEventListeners *listeners() { return &listeners_; } - TestResult* current_test_result(); + TestResult *current_test_result(); - const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } + const TestResult *ad_hoc_test_result() const { return &ad_hoc_test_result_; } - void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); + void set_os_stack_trace_getter(OsStackTraceGetterInterface *getter); - OsStackTraceGetterInterface* os_stack_trace_getter(); + OsStackTraceGetterInterface *os_stack_trace_getter();
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
562
563
564
565
566
567
568
569
570
571
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
610
611
612
613
614
615
616
617
618
619
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
969
970
971
972
973
974
975
976
977
978
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
568
569
570
571
572
573
574
575
576
577
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
616
617
618
619
620
621
622
623
624
625
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
978
979
980
981
982
983
984
985
986
987
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
553
554
555
556
557
558
559
560
561
562
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
601
602
603
604
605
606
607
608
609
610
// Returns the current OS stack trace as a String. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the

[CVE-2020-0478_1.diff] gtest-internal-inl.h #24
- // Finds and returns a TestCase with the given name. If one doesn't + // Finds and returns a TestSuite with the given name. If one doesn't - // test_case_name: name of the test case + // test_suite_name: name of the test suite - // set_up_tc: pointer to the function that sets up the test case - // tear_down_tc: pointer to the function that tears down the test case - TestCase* GetTestCase(const char* test_case_name, - const char* type_param, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc); + // set_up_tc: pointer to the function that sets up the test suite + // tear_down_tc: pointer to the function that tears down the test suite + TestSuite *GetTestSuite(const char *test_suite_name, const char *type_param, + internal::SetUpTestSuiteFunc set_up_tc, + internal::TearDownTestSuiteFunc tear_down_tc); + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + TestCase *GetTestCase(const char *test_case_name, const char *type_param, + internal::SetUpTestSuiteFunc set_up_tc, + internal::TearDownTestSuiteFunc tear_down_tc) { + return GetTestSuite(test_case_name, type_param, set_up_tc, tear_down_tc); + } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ - // set_up_tc: pointer to the function that sets up the test case - // tear_down_tc: pointer to the function that tears down the test case + // set_up_tc: pointer to the function that sets up the test suite + // tear_down_tc: pointer to the function that tears down the test suite - void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc, - TestInfo* test_info) { + void AddTestInfo(internal::SetUpTestSuiteFunc set_up_tc, + internal::TearDownTestSuiteFunc tear_down_tc, + TestInfo *test_info) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
623
624
625
626
627
628
629
630
631
632
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
648
649
650
651
652
653
654
655
656
657
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
629
630
631
632
633
634
635
636
637
638
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
654
655
656
657
658
659
660
661
662
663
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
614
615
616
617
618
619
620
621
622
623
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
639
640
641
642
643
644
645
646
647
648
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())

[CVE-2020-0478_1.diff] gtest-internal-inl.h #26
- ForEach(test_cases_, TestCase::ClearTestCaseResult); + ForEach(test_suites_, TestSuite::ClearTestSuiteResult); - void ClearAdHocTestResult() { - ad_hoc_test_result_.Clear(); - } + void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } - // context of a test or a test case, or to the global property set. If the + // context of a test or a test suite, or to the global property set. If the - void RecordProperty(const TestProperty& test_property); + void RecordProperty(const TestProperty &test_property); - enum ReactionToSharding { - HONOR_SHARDING_PROTOCOL, - IGNORE_SHARDING_PROTOCOL - }; + enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL }; - // result in each TestCase and TestInfo object. + // result in each TestSuite and TestInfo object.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
693
694
695
696
697
698
699
700
701
702
void RegisterParameterizedTests(); // Runs all tests in this UnitTest object, prints the result, and // returns true if all tests are successful. If any exception is // thrown during a test, this test is considered to be failed, but // the rest of the tests will still be run. bool RunAllTests(); // Clears the results of all tests, except the ad hoc tests. void ClearNonAdHocTestResult() {
+ show +
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
ForEach(test_cases_, TestCase::ClearTestCaseResult); } // Clears the results of ad-hoc test assertions. void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } // Adds a TestProperty to the current TestResult object when invoked in a // context of a test or a test case, or to the global property set. If the // result already contains a property with the same key, the value will be // updated. void RecordProperty(const TestProperty& test_property); enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL };
+ show +
721
722
723
724
725
726
727
728
729
730
// Matches the full name of each test against the user-specified // filter to decide whether the test should run, then records the // result in each TestCase and TestInfo object. // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests // based on sharding variables in the environment. // Returns the number of tests that should run. int FilterTests(ReactionToSharding shard_tests); // Prints the names of the tests matching the user-specified filter flag.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
void RegisterParameterizedTests(); // Runs all tests in this UnitTest object, prints the result, and // returns true if all tests are successful. If any exception is // thrown during a test, this test is considered to be failed, but // the rest of the tests will still be run. bool RunAllTests(); // Clears the results of all tests, except the ad hoc tests. void ClearNonAdHocTestResult() {
+ show +
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
ForEach(test_cases_, TestCase::ClearTestCaseResult); } // Clears the results of ad-hoc test assertions. void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } // Adds a TestProperty to the current TestResult object when invoked in a // context of a test or a test case, or to the global property set. If the // result already contains a property with the same key, the value will be // updated. void RecordProperty(const TestProperty& test_property); enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL };
+ show +
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
// Matches the full name of each test against the user-specified // filter to decide whether the test should run, then records the // result in each TestCase and TestInfo object. // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests // based on sharding variables in the environment. // Returns the number of tests that should run. int FilterTests(ReactionToSharding shard_tests); // Prints the names of the tests matching the user-specified filter flag.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
697
698
699
700
701
702
703
704
705
706
void RegisterParameterizedTests(); // Runs all tests in this UnitTest object, prints the result, and // returns true if all tests are successful. If any exception is // thrown during a test, this test is considered to be failed, but // the rest of the tests will still be run. bool RunAllTests(); // Clears the results of all tests, except the ad hoc tests. void ClearNonAdHocTestResult() {
+ show +
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
ForEach(test_cases_, TestCase::ClearTestCaseResult); } // Clears the results of ad-hoc test assertions. void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } // Adds a TestProperty to the current TestResult object when invoked in a // context of a test or a test case, or to the global property set. If the // result already contains a property with the same key, the value will be // updated. void RecordProperty(const TestProperty& test_property); enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL };
+ show +
725
726
727
728
729
730
731
732
733
734
// Matches the full name of each test against the user-specified // filter to decide whether the test should run, then records the // result in each TestCase and TestInfo object. // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests // based on sharding variables in the environment. // Returns the number of tests that should run. int FilterTests(ReactionToSharding shard_tests); // Prints the names of the tests matching the user-specified filter flag.

[CVE-2020-0478_1.diff] gtest-internal-inl.h #38
- char* end; + char *end; + using BiggestConvertible = unsigned long long; // NOLINT -# if GTEST_OS_WINDOWS && !defined(__GNUC__) - - // MSVC and C++ Builder define __int64 instead of the standard long long. - typedef unsigned __int64 BiggestConvertible; - const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); - -# else - - typedef unsigned long long BiggestConvertible; // NOLINT - const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); - -# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) - + const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); // NOLINT - // TODO(vladl@google.com): Convert this to compile time assertion when it is - // available.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
966
967
968
969
970
971
972
973
974
975
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
992
993
994
995
996
997
998
999
1000
1001
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-internal-inl.h
984
985
986
987
988
989
990
991
992
993
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
const bool parse_success = *end == '\0' && errno == 0; GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result; return true; }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
968
969
970
971
972
973
974
975
976
977
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
994
995
996
997
998
999
1000
1001
1002
1003
const bool parse_success = *end == '\0' && errno == 0; // FIXME: Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
973
974
975
976
977
978
979
980
981
982
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-internal-inl.h
989
990
991
992
993
994
995
996
997
998
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
const bool parse_success = *end == '\0' && errno == 0; GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result; return true; }

[CVE-2020-0470_1.diff] gtest-internal-inl.h #23
- // Returns true iff the unit test passed (i.e. all test cases passed). + // Returns true if and only if the unit test passed (i.e. all test suites + // passed). - // Returns true iff the unit test failed (i.e. some test case failed - // or something outside of all tests failed). + // Returns true if and only if the unit test failed (i.e. some test suite + // failed or something outside of all tests failed). - return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); + return failed_test_suite_count() > 0 || ad_hoc_test_result()->Failed(); - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - const TestCase* GetTestCase(int i) const { - const int index = GetElementOr(test_case_indices_, i, -1); - return index < 0 ? NULL : test_cases_[i]; + // Gets the i-th test suite among all the test suites. i can range from 0 to + // total_test_suite_count() - 1. If i is not in that range, returns NULL. + const TestSuite *GetTestSuite(int i) const { + const int index = GetElementOr(test_suite_indices_, i, -1); + return index < 0 ? nullptr : test_suites_[static_cast<size_t>(i)]; - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - TestCase* GetMutableTestCase(int i) { - const int index = GetElementOr(test_case_indices_, i, -1); - return index < 0 ? NULL : test_cases_[index]; + // Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + const TestCase *GetTestCase(int i) const { return GetTestSuite(i); } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + // Gets the i-th test suite among all the test suites. i can range from 0 to + // total_test_suite_count() - 1. If i is not in that range, returns NULL. + TestSuite *GetMutableSuiteCase(int i) { + const int index = GetElementOr(test_suite_indices_, i, -1); + return index < 0 ? nullptr : test_suites_[static_cast<size_t>(index)]; - TestEventListeners* listeners() { return &listeners_; } + TestEventListeners *listeners() { return &listeners_; } - TestResult* current_test_result(); + TestResult *current_test_result(); - const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } + const TestResult *ad_hoc_test_result() const { return &ad_hoc_test_result_; } - void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); + void set_os_stack_trace_getter(OsStackTraceGetterInterface *getter); - OsStackTraceGetterInterface* os_stack_trace_getter(); + OsStackTraceGetterInterface *os_stack_trace_getter();
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
562
563
564
565
566
567
568
569
570
571
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
610
611
612
613
614
615
616
617
618
619
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
969
970
971
972
973
974
975
976
977
978
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
568
569
570
571
572
573
574
575
576
577
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
616
617
618
619
620
621
622
623
624
625
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
978
979
980
981
982
983
984
985
986
987
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
553
554
555
556
557
558
559
560
561
562
// Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } // Returns true iff the unit test passed (i.e. all test cases passed). bool Passed() const { return !Failed(); } // Returns true iff the unit test failed (i.e. some test case failed // or something outside of all tests failed). bool Failed() const {
+ show +
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { const int index = GetElementOr(test_case_indices_, i, -1); return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. TestEventListeners* listeners() { return &listeners_; } // Returns the TestResult for the test that's currently running, or // the TestResult for the ad hoc test if no test is running. TestResult* current_test_result(); // Returns the TestResult for the ad hoc test. const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } // Sets the OS stack trace getter. // // Does nothing if the input and the current OS stack trace getter // are the same; otherwise, deletes the old getter and makes the // input the current getter. void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); // Returns the current OS stack trace getter if it is not NULL; // otherwise, creates an OsStackTraceGetter, makes it the current // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter();
+ show +
601
602
603
604
605
606
607
608
609
610
// Returns the current OS stack trace as a String. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter // specifies the number of top frames to be skipped, which doesn't // count against the number of frames to be included. // // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the

[CVE-2020-0470_1.diff] gtest-internal-inl.h #24
- // Finds and returns a TestCase with the given name. If one doesn't + // Finds and returns a TestSuite with the given name. If one doesn't - // test_case_name: name of the test case + // test_suite_name: name of the test suite - // set_up_tc: pointer to the function that sets up the test case - // tear_down_tc: pointer to the function that tears down the test case - TestCase* GetTestCase(const char* test_case_name, - const char* type_param, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc); + // set_up_tc: pointer to the function that sets up the test suite + // tear_down_tc: pointer to the function that tears down the test suite + TestSuite *GetTestSuite(const char *test_suite_name, const char *type_param, + internal::SetUpTestSuiteFunc set_up_tc, + internal::TearDownTestSuiteFunc tear_down_tc); + +// Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + TestCase *GetTestCase(const char *test_case_name, const char *type_param, + internal::SetUpTestSuiteFunc set_up_tc, + internal::TearDownTestSuiteFunc tear_down_tc) { + return GetTestSuite(test_case_name, type_param, set_up_tc, tear_down_tc); + } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ - // set_up_tc: pointer to the function that sets up the test case - // tear_down_tc: pointer to the function that tears down the test case + // set_up_tc: pointer to the function that sets up the test suite + // tear_down_tc: pointer to the function that tears down the test suite - void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc, - TestInfo* test_info) { + void AddTestInfo(internal::SetUpTestSuiteFunc set_up_tc, + internal::TearDownTestSuiteFunc tear_down_tc, + TestInfo *test_info) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
623
624
625
626
627
628
629
630
631
632
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
648
649
650
651
652
653
654
655
656
657
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
629
630
631
632
633
634
635
636
637
638
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
654
655
656
657
658
659
660
661
662
663
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
614
615
616
617
618
619
620
621
622
623
// Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. // // Arguments: // // test_case_name: name of the test case // type_param: the name of the test's type parameter, or NULL if // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case
+ show +
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
TestCase* GetTestCase(const char* test_case_name, const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Adds a TestInfo to the unit test. // // Arguments: // // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo* test_info) {
+ show +
639
640
641
642
643
644
645
646
647
648
// In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as // the user may have changed the current directory before calling // RUN_ALL_TESTS(). Therefore we capture the current directory in // AddTestInfo(), which is called to register a TEST or TEST_F // before main() is reached. if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); GTEST_CHECK_(!original_working_dir_.IsEmpty())

[CVE-2020-0470_1.diff] gtest-internal-inl.h #26
- ForEach(test_cases_, TestCase::ClearTestCaseResult); + ForEach(test_suites_, TestSuite::ClearTestSuiteResult); - void ClearAdHocTestResult() { - ad_hoc_test_result_.Clear(); - } + void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } - // context of a test or a test case, or to the global property set. If the + // context of a test or a test suite, or to the global property set. If the - void RecordProperty(const TestProperty& test_property); + void RecordProperty(const TestProperty &test_property); - enum ReactionToSharding { - HONOR_SHARDING_PROTOCOL, - IGNORE_SHARDING_PROTOCOL - }; + enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL }; - // result in each TestCase and TestInfo object. + // result in each TestSuite and TestInfo object.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
693
694
695
696
697
698
699
700
701
702
void RegisterParameterizedTests(); // Runs all tests in this UnitTest object, prints the result, and // returns true if all tests are successful. If any exception is // thrown during a test, this test is considered to be failed, but // the rest of the tests will still be run. bool RunAllTests(); // Clears the results of all tests, except the ad hoc tests. void ClearNonAdHocTestResult() {
+ show +
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
ForEach(test_cases_, TestCase::ClearTestCaseResult); } // Clears the results of ad-hoc test assertions. void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } // Adds a TestProperty to the current TestResult object when invoked in a // context of a test or a test case, or to the global property set. If the // result already contains a property with the same key, the value will be // updated. void RecordProperty(const TestProperty& test_property); enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL };
+ show +
721
722
723
724
725
726
727
728
729
730
// Matches the full name of each test against the user-specified // filter to decide whether the test should run, then records the // result in each TestCase and TestInfo object. // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests // based on sharding variables in the environment. // Returns the number of tests that should run. int FilterTests(ReactionToSharding shard_tests); // Prints the names of the tests matching the user-specified filter flag.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
void RegisterParameterizedTests(); // Runs all tests in this UnitTest object, prints the result, and // returns true if all tests are successful. If any exception is // thrown during a test, this test is considered to be failed, but // the rest of the tests will still be run. bool RunAllTests(); // Clears the results of all tests, except the ad hoc tests. void ClearNonAdHocTestResult() {
+ show +
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
ForEach(test_cases_, TestCase::ClearTestCaseResult); } // Clears the results of ad-hoc test assertions. void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } // Adds a TestProperty to the current TestResult object when invoked in a // context of a test or a test case, or to the global property set. If the // result already contains a property with the same key, the value will be // updated. void RecordProperty(const TestProperty& test_property); enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL };
+ show +
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
// Matches the full name of each test against the user-specified // filter to decide whether the test should run, then records the // result in each TestCase and TestInfo object. // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests // based on sharding variables in the environment. // Returns the number of tests that should run. int FilterTests(ReactionToSharding shard_tests); // Prints the names of the tests matching the user-specified filter flag.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
697
698
699
700
701
702
703
704
705
706
void RegisterParameterizedTests(); // Runs all tests in this UnitTest object, prints the result, and // returns true if all tests are successful. If any exception is // thrown during a test, this test is considered to be failed, but // the rest of the tests will still be run. bool RunAllTests(); // Clears the results of all tests, except the ad hoc tests. void ClearNonAdHocTestResult() {
+ show +
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
ForEach(test_cases_, TestCase::ClearTestCaseResult); } // Clears the results of ad-hoc test assertions. void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } // Adds a TestProperty to the current TestResult object when invoked in a // context of a test or a test case, or to the global property set. If the // result already contains a property with the same key, the value will be // updated. void RecordProperty(const TestProperty& test_property); enum ReactionToSharding { HONOR_SHARDING_PROTOCOL, IGNORE_SHARDING_PROTOCOL };
+ show +
725
726
727
728
729
730
731
732
733
734
// Matches the full name of each test against the user-specified // filter to decide whether the test should run, then records the // result in each TestCase and TestInfo object. // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests // based on sharding variables in the environment. // Returns the number of tests that should run. int FilterTests(ReactionToSharding shard_tests); // Prints the names of the tests matching the user-specified filter flag.

[CVE-2020-0470_1.diff] gtest-internal-inl.h #38
- char* end; + char *end; + using BiggestConvertible = unsigned long long; // NOLINT -# if GTEST_OS_WINDOWS && !defined(__GNUC__) - - // MSVC and C++ Builder define __int64 instead of the standard long long. - typedef unsigned __int64 BiggestConvertible; - const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); - -# else - - typedef unsigned long long BiggestConvertible; // NOLINT - const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); - -# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) - + const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); // NOLINT - // TODO(vladl@google.com): Convert this to compile time assertion when it is - // available.
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
966
967
968
969
970
971
972
973
974
975
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
992
993
994
995
996
997
998
999
1000
1001
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest-internal-inl.h
984
985
986
987
988
989
990
991
992
993
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
const bool parse_success = *end == '\0' && errno == 0; GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result; return true; }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-internal-inl.h
968
969
970
971
972
973
974
975
976
977
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
994
995
996
997
998
999
1000
1001
1002
1003
const bool parse_success = *end == '\0' && errno == 0; // FIXME: Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest-internal-inl.h
973
974
975
976
977
978
979
980
981
982
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is // available. GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result;
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest-internal-inl.h
989
990
991
992
993
994
995
996
997
998
template <typename Integer> bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0;
+ show +
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. # if GTEST_OS_WINDOWS && !defined(__GNUC__) // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); # else typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+ show +
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
const bool parse_success = *end == '\0' && errno == 0; GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); const Integer result = static_cast<Integer>(parsed); if (parse_success && static_cast<BiggestConvertible>(result) == parsed) { *number = result; return true; }

[CVE-2020-0478_1.diff] gtest-death-test.cc #15
- DeathTestImpl(const char* a_statement, const RE* a_regex) - : statement_(a_statement), - regex_(a_regex), - spawned_(false), - status_(-1), - outcome_(IN_PROGRESS), - read_fd_(-1), - write_fd_(-1) {} + DeathTestImpl(const char *a_statement, Matcher<const std::string &> matcher) + : statement_(a_statement), matcher_(std::move(matcher)), spawned_(false), + status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} - ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } + ~DeathTestImpl() override { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } - void Abort(AbortReason reason); - virtual bool Passed(bool status_ok); + void Abort(AbortReason reason) override; + bool Passed(bool status_ok) override; - const char* statement() const { return statement_; } - const RE* regex() const { return regex_; } + const char *statement() const { return statement_; }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
365
366
367
368
369
370
371
372
373
374
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
392
393
394
395
396
397
398
399
400
401
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
381
382
383
384
385
386
387
388
389
390
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
408
409
410
411
412
413
414
415
416
417
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }

[CVE-2020-0478_1.diff] gtest-death-test.cc #42
- const std::string filter_flag = - std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" - + info->test_case_name() + "." + info->name(); - const std::string internal_flag = - std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" - + file_ + "|" + StreamableToString(line_) + "|" - + StreamableToString(death_test_index) + "|" - + StreamableToString(pipe_fd[1]); + const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + + kFilterFlag + "=" + info->test_suite_name() + + "." + info->name(); + const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + + kInternalRunDeathTestFlag + "=" + file_ + + "|" + StreamableToString(line_) + "|" + + StreamableToString(death_test_index) + "|" + + StreamableToString(pipe_fd[1]);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
set_write_fd(flag->write_fd()); return EXECUTE_TEST; } int pipe_fd[2]; GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); // Clear the close-on-exec flag on the write end of the pipe, lest // it be closed when the child process does an exec: GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+ show +
1136
1137
1138
1139
1140
1141
1142
1143
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + info->test_case_name() + "." + info->name(); const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" + file_ + "|" + StreamableToString(line_) + "|" + StreamableToString(death_test_index) + "|" + StreamableToString(pipe_fd[1]);
+ show +
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
Arguments args; args.AddArguments(GetArgvsForDeathTestChildProcess()); args.AddArgument(filter_flag.c_str()); args.AddArgument(internal_flag.c_str()); DeathTest::set_last_death_test_message(""); CaptureStderr(); // See the comment in NoExecDeathTest::AssumeRole for why the next line // is necessary.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
set_write_fd(flag->write_fd()); return EXECUTE_TEST; } int pipe_fd[2]; GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); // Clear the close-on-exec flag on the write end of the pipe, lest // it be closed when the child process does an exec: GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+ show +
7966
7967
7968
7969
7970
7971
7972
7973
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + info->test_case_name() + "." + info->name(); const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" + file_ + "|" + StreamableToString(line_) + "|" + StreamableToString(death_test_index) + "|" + StreamableToString(pipe_fd[1]);
+ show +
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
Arguments args; args.AddArguments(GetArgvsForDeathTestChildProcess()); args.AddArgument(filter_flag.c_str()); args.AddArgument(internal_flag.c_str()); DeathTest::set_last_death_test_message(""); CaptureStderr(); // See the comment in NoExecDeathTest::AssumeRole for why the next line // is necessary.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
set_write_fd(flag->write_fd()); return EXECUTE_TEST; } int pipe_fd[2]; GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); // Clear the close-on-exec flag on the write end of the pipe, lest // it be closed when the child process does an exec: GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+ show +
1352
1353
1354
1355
1356
1357
1358
1359
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + info->test_case_name() + "." + info->name(); const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" + file_ + "|" + StreamableToString(line_) + "|" + StreamableToString(death_test_index) + "|" + StreamableToString(pipe_fd[1]);
+ show +
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
Arguments args; args.AddArguments(GetArgvsForDeathTestChildProcess()); args.AddArgument(filter_flag.c_str()); args.AddArgument(internal_flag.c_str()); DeathTest::set_last_death_test_message(""); CaptureStderr(); // See the comment in NoExecDeathTest::AssumeRole for why the next line // is necessary.

[CVE-2020-0470_1.diff] gtest-death-test.cc #15
- DeathTestImpl(const char* a_statement, const RE* a_regex) - : statement_(a_statement), - regex_(a_regex), - spawned_(false), - status_(-1), - outcome_(IN_PROGRESS), - read_fd_(-1), - write_fd_(-1) {} + DeathTestImpl(const char *a_statement, Matcher<const std::string &> matcher) + : statement_(a_statement), matcher_(std::move(matcher)), spawned_(false), + status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} - ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } + ~DeathTestImpl() override { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } - void Abort(AbortReason reason); - virtual bool Passed(bool status_ok); + void Abort(AbortReason reason) override; + bool Passed(bool status_ok) override; - const char* statement() const { return statement_; } - const RE* regex() const { return regex_; } + const char *statement() const { return statement_; }
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
365
366
367
368
369
370
371
372
373
374
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
392
393
394
395
396
397
398
399
400
401
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
381
382
383
384
385
386
387
388
389
390
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
408
409
410
411
412
413
414
415
416
417
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected:
+ show +
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
DeathTestImpl(const char* a_statement, const RE* a_regex) : statement_(a_statement), regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), read_fd_(-1), write_fd_(-1) {} // read_fd_ is expected to be closed and cleared by a derived class. ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } void Abort(AbortReason reason); virtual bool Passed(bool status_ok); const char* statement() const { return statement_; } const RE* regex() const { return regex_; }
+ show +
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
bool spawned() const { return spawned_; } void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } void set_write_fd(int fd) { write_fd_ = fd; }

[CVE-2020-0470_1.diff] gtest-death-test.cc #42
- const std::string filter_flag = - std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" - + info->test_case_name() + "." + info->name(); - const std::string internal_flag = - std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" - + file_ + "|" + StreamableToString(line_) + "|" - + StreamableToString(death_test_index) + "|" - + StreamableToString(pipe_fd[1]); + const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + + kFilterFlag + "=" + info->test_suite_name() + + "." + info->name(); + const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + + kInternalRunDeathTestFlag + "=" + file_ + + "|" + StreamableToString(line_) + "|" + + StreamableToString(death_test_index) + "|" + + StreamableToString(pipe_fd[1]);
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest-death-test.cc
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
set_write_fd(flag->write_fd()); return EXECUTE_TEST; } int pipe_fd[2]; GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); // Clear the close-on-exec flag on the write end of the pipe, lest // it be closed when the child process does an exec: GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+ show +
1136
1137
1138
1139
1140
1141
1142
1143
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + info->test_case_name() + "." + info->name(); const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" + file_ + "|" + StreamableToString(line_) + "|" + StreamableToString(death_test_index) + "|" + StreamableToString(pipe_fd[1]);
+ show +
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
Arguments args; args.AddArguments(GetArgvsForDeathTestChildProcess()); args.AddArgument(filter_flag.c_str()); args.AddArgument(internal_flag.c_str()); DeathTest::set_last_death_test_message(""); CaptureStderr(); // See the comment in NoExecDeathTest::AssumeRole for why the next line // is necessary.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
set_write_fd(flag->write_fd()); return EXECUTE_TEST; } int pipe_fd[2]; GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); // Clear the close-on-exec flag on the write end of the pipe, lest // it be closed when the child process does an exec: GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+ show +
7966
7967
7968
7969
7970
7971
7972
7973
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + info->test_case_name() + "." + info->name(); const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" + file_ + "|" + StreamableToString(line_) + "|" + StreamableToString(death_test_index) + "|" + StreamableToString(pipe_fd[1]);
+ show +
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
Arguments args; args.AddArguments(GetArgvsForDeathTestChildProcess()); args.AddArgument(filter_flag.c_str()); args.AddArgument(internal_flag.c_str()); DeathTest::set_last_death_test_message(""); CaptureStderr(); // See the comment in NoExecDeathTest::AssumeRole for why the next line // is necessary.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest-death-test.cc
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
set_write_fd(flag->write_fd()); return EXECUTE_TEST; } int pipe_fd[2]; GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); // Clear the close-on-exec flag on the write end of the pipe, lest // it be closed when the child process does an exec: GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+ show +
1352
1353
1354
1355
1356
1357
1358
1359
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + info->test_case_name() + "." + info->name(); const std::string internal_flag = std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "=" + file_ + "|" + StreamableToString(line_) + "|" + StreamableToString(death_test_index) + "|" + StreamableToString(pipe_fd[1]);
+ show +
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
Arguments args; args.AddArguments(GetArgvsForDeathTestChildProcess()); args.AddArgument(filter_flag.c_str()); args.AddArgument(internal_flag.c_str()); DeathTest::set_last_death_test_message(""); CaptureStderr(); // See the comment in NoExecDeathTest::AssumeRole for why the next line // is necessary.

[CVE-2020-0478_1.diff] gtest.cc #22
-AssertionResult HasOneFailure(const char* /* results_expr */, - const char* /* type_expr */, - const char* /* substr_expr */, - const TestPartResultArray& results, - TestPartResult::Type type, - const string& substr) { - const std::string expected(type == TestPartResult::kFatalFailure ? - "1 fatal failure" : - "1 non-fatal failure"); +static AssertionResult HasOneFailure(const char * /* results_expr */, + const char * /* type_expr */, + const char * /* substr_expr */, + const TestPartResultArray &results, + TestPartResult::Type type, + const std::string &substr) { + const std::string expected(type == TestPartResult::kFatalFailure + ? "1 fatal failure" + : "1 non-fatal failure");
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
621
622
623
624
625
626
627
628
629
630
return GetTypeId<Test>(); } // The value of GetTestTypeId() as seen from within the Google Test // library. This is solely for testing GetTestTypeId(). extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); // This predicate-formatter checks that 'results' contains a test part // failure of the given type and that the failure message contains the // given substring.
+ show +
631
632
633
634
635
636
637
638
639
AssertionResult HasOneFailure(const char* /* results_expr */, const char* /* type_expr */, const char* /* substr_expr */, const TestPartResultArray& results, TestPartResult::Type type, const string& substr) { const std::string expected(type == TestPartResult::kFatalFailure ? "1 fatal failure" : "1 non-fatal failure");
+ show +
640
641
642
643
644
645
646
647
648
649
Message msg; if (results.size() != 1) { msg << "Expected: " << expected << "\n" << " Actual: " << results.size() << " failures"; for (int i = 0; i < results.size(); i++) { msg << "\n" << results.GetTestPartResult(i); } return AssertionFailure() << msg; }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
return GetTypeId<Test>(); } // The value of GetTestTypeId() as seen from within the Google Test // library. This is solely for testing GetTestTypeId(). extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); // This predicate-formatter checks that 'results' contains a test part // failure of the given type and that the failure message contains the // given substring.
+ show +
2079
2080
2081
2082
2083
2084
2085
2086
2087
AssertionResult HasOneFailure(const char* /* results_expr */, const char* /* type_expr */, const char* /* substr_expr */, const TestPartResultArray& results, TestPartResult::Type type, const string& substr) { const std::string expected(type == TestPartResult::kFatalFailure ? "1 fatal failure" : "1 non-fatal failure");
+ show +
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
Message msg; if (results.size() != 1) { msg << "Expected: " << expected << "\n" << " Actual: " << results.size() << " failures"; for (int i = 0; i < results.size(); i++) { msg << "\n" << results.GetTestPartResult(i); } return AssertionFailure() << msg; }

[CVE-2020-0478_1.diff] gtest.cc #24
-SingleFailureChecker:: SingleFailureChecker( - const TestPartResultArray* results, - TestPartResult::Type type, - const string& substr) - : results_(results), - type_(type), - substr_(substr) {} +SingleFailureChecker::SingleFailureChecker(const TestPartResultArray *results, + TestPartResult::Type type, + const std::string &substr) + : results_(results), type_(type), substr_(substr) {}
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
660
661
662
663
664
665
666
667
668
669
<< " Actual:\n" << r; } return AssertionSuccess(); } // The constructor of SingleFailureChecker remembers where to look up // test part results, what type of failure we expect, and what // substring the failure message should contain.
+ show +
670
671
672
673
674
675
676
SingleFailureChecker:: SingleFailureChecker( const TestPartResultArray* results, TestPartResult::Type type, const string& substr) : results_(results), type_(type), substr_(substr) {}
+ show +
677
678
679
680
681
682
683
684
685
686
// The destructor of SingleFailureChecker verifies that the given // TestPartResultArray contains exactly one failure that has the given // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. SingleFailureChecker::~SingleFailureChecker() { EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); } DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
<< " Actual:\n" << r; } return AssertionSuccess(); } // The constructor of SingleFailureChecker remembers where to look up // test part results, what type of failure we expect, and what // substring the failure message should contain.
+ show +
2118
2119
2120
2121
2122
2123
2124
SingleFailureChecker:: SingleFailureChecker( const TestPartResultArray* results, TestPartResult::Type type, const string& substr) : results_(results), type_(type), substr_(substr) {}
+ show +
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
// The destructor of SingleFailureChecker verifies that the given // TestPartResultArray contains exactly one failure that has the given // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. SingleFailureChecker::~SingleFailureChecker() { EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); } DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
634
635
636
637
638
639
640
641
642
643
<< " Actual:\n" << r; } return AssertionSuccess(); } // The constructor of SingleFailureChecker remembers where to look up // test part results, what type of failure we expect, and what // substring the failure message should contain.
+ show +
644
645
646
647
648
649
650
SingleFailureChecker:: SingleFailureChecker( const TestPartResultArray* results, TestPartResult::Type type, const string& substr) : results_(results), type_(type), substr_(substr) {}
+ show +
651
652
653
654
655
656
657
658
659
660
// The destructor of SingleFailureChecker verifies that the given // TestPartResultArray contains exactly one failure that has the given // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. SingleFailureChecker::~SingleFailureChecker() { EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); } DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(

[CVE-2020-0478_1.diff] gtest.cc #57
-// The following two functions only make sense if the the system +// The following two functions only make sense if the system -// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. +// with 16 bit wchar_t (Windows, Cygwin) do use UTF-16. - return sizeof(wchar_t) == 2 && - (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; + return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && + (second & 0xFC00) == 0xDC00; -inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, - wchar_t second) { - const UInt32 mask = (1 << 10) - 1; - return (sizeof(wchar_t) == 2) ? - (((first & mask) << 10) | (second & mask)) + 0x10000 : - // This function should not be called when the condition is - // false, but we provide a sensible default in case it is. - static_cast<UInt32>(first); +inline uint32_t CreateCodePointFromUtf16SurrogatePair(wchar_t first, + wchar_t second) { + const auto first_u = static_cast<uint32_t>(first); + const auto second_u = static_cast<uint32_t>(second); + const uint32_t mask = (1 << 10) - 1; + return (sizeof(wchar_t) == 2) + ? (((first_u & mask) << 10) | (second_u & mask)) + 0x10000 + : + // This function should not be called when the condition is + // false, but we provide a sensible default in case it is. + first_u; -// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
} // The following two functions only make sense if the the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
} // The following two functions only make sense if the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
} // The following two functions only make sense if the the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
} // The following two functions only make sense if the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
} // The following two functions only make sense if the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.

[CVE-2020-0478_1.diff] gtest.cc #138
- // Makes sure InitGoogleTest() was called. - if (!GTestIsInitialized()) { - printf("%s", - "\nThis test program did NOT call ::testing::InitGoogleTest " - "before calling RUN_ALL_TESTS(). Please fix it.\n"); - return false; - } + // True if and only if Google Test is initialized before RUN_ALL_TESTS() is + // called. + const bool gtest_is_initialized_before_run_all_tests = GTestIsInitialized(); - if (g_help_flag) - return true; + if (g_help_flag) return true;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
// returns true if all tests are successful. If any exception is // thrown during a test, the test is considered to be failed, but the // rest of the tests will still be run. // // When parameterized tests are enabled, it expands and registers // parameterized tests first in RegisterParameterizedTests(). // All other functions called from RunAllTests() may safely assume that // parameterized tests are ready to be counted and run. bool UnitTestImpl::RunAllTests() { // Makes sure InitGoogleTest() was called.
+ show +
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
if (!GTestIsInitialized()) { printf("%s", "\nThis test program did NOT call ::testing::InitGoogleTest " "before calling RUN_ALL_TESTS(). Please fix it.\n"); return false; } // Do not run any test if the --help flag was specified. if (g_help_flag) return true;
+ show +
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
// Repeats the call to the post-flag parsing initialization in case the // user didn't call InitGoogleTest. PostFlagParsingInit(); // Even if sharding is not on, test runners may want to use the // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding // protocol. internal::WriteToShardStatusFileIfNeeded();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
// returns true if all tests are successful. If any exception is // thrown during a test, the test is considered to be failed, but the // rest of the tests will still be run. // // When parameterized tests are enabled, it expands and registers // parameterized tests first in RegisterParameterizedTests(). // All other functions called from RunAllTests() may safely assume that // parameterized tests are ready to be counted and run. bool UnitTestImpl::RunAllTests() { // Makes sure InitGoogleTest() was called.
+ show +
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
if (!GTestIsInitialized()) { printf("%s", "\nThis test program did NOT call ::testing::InitGoogleTest " "before calling RUN_ALL_TESTS(). Please fix it.\n"); return false; } // Do not run any test if the --help flag was specified. if (g_help_flag) return true;
+ show +
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
// Repeats the call to the post-flag parsing initialization in case the // user didn't call InitGoogleTest. PostFlagParsingInit(); // Even if sharding is not on, test runners may want to use the // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding // protocol. internal::WriteToShardStatusFileIfNeeded();
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
// returns true if all tests are successful. If any exception is // thrown during a test, the test is considered to be failed, but the // rest of the tests will still be run. // // When parameterized tests are enabled, it expands and registers // parameterized tests first in RegisterParameterizedTests(). // All other functions called from RunAllTests() may safely assume that // parameterized tests are ready to be counted and run. bool UnitTestImpl::RunAllTests() { // Makes sure InitGoogleTest() was called.
+ show +
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
if (!GTestIsInitialized()) { printf("%s", "\nThis test program did NOT call ::testing::InitGoogleTest " "before calling RUN_ALL_TESTS(). Please fix it.\n"); return false; } // Do not run any test if the --help flag was specified. if (g_help_flag) return true;
+ show +
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
// Repeats the call to the post-flag parsing initialization in case the // user didn't call InitGoogleTest. PostFlagParsingInit(); // Even if sharding is not on, test runners may want to use the // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding // protocol. internal::WriteToShardStatusFileIfNeeded();

[CVE-2020-0478_1.diff] gtest.cc #145
+ if (!gtest_is_initialized_before_run_all_tests) { + ColoredPrintf( + COLOR_RED, + "\nIMPORTANT NOTICE - DO NOT IGNORE:\n" + "This test program did NOT call " GTEST_INIT_GOOGLE_TEST_NAME_ + "() before calling RUN_ALL_TESTS(). This is INVALID. Soon " GTEST_NAME_ + " will start to enforce the valid usage. " + "Please fix it ASAP, or IT WILL START TO FAIL.\n"); // NOLINT +#if GTEST_FOR_GOOGLE_ + ColoredPrintf(COLOR_RED, + "For more details, see http://wiki/Main/ValidGUnitMain.\n"); +#endif // GTEST_FOR_GOOGLE_ + } + - const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); - if (test_shard_file != NULL) { - FILE* const file = posix::FOpen(test_shard_file, "w"); - if (file == NULL) { + const char *const test_shard_file = posix::GetEnv(kTestShardStatusFile); + if (test_shard_file != nullptr) { + FILE *const file = posix::FOpen(test_shard_file, "w"); + if (file == nullptr) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
4694
4695
4696
4697
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
6142
6143
6144
6145
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
} return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
5236
5237
5238
5239
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
5694
5695
5696
5697
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
4252
4253
4254
4255
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }

[CVE-2020-0478_1.diff] gtest.cc #149
-// each TestCase and TestInfo object. +// each TestSuite and TestInfo object. -// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. -// Returns the number of tests that should run. +// https://github.com/google/googletest/blob/master/googletest/docs/advanced.md +// . Returns the number of tests that should run. - const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? - Int32FromEnvOrDie(kTestTotalShards, -1) : -1; - const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? - Int32FromEnvOrDie(kTestShardIndex, -1) : -1; + const int32_t total_shards = shard_tests == HONOR_SHARDING_PROTOCOL + ? Int32FromEnvOrDie(kTestTotalShards, -1) + : -1; + const int32_t shard_index = shard_tests == HONOR_SHARDING_PROTOCOL + ? Int32FromEnvOrDie(kTestShardIndex, -1) + : -1;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. // Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
4790
4791
4792
4793
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const std::string &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestSuite and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // https://github.com/google/googletest/blob/master/googletest/docs/advanced.md // . Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
5431
5432
5433
5434
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (auto* test_suite : test_suites_) { const std::string& test_suite_name = test_suite->name(); test_suite->set_should_run(false);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. // Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
6238
6239
6240
6241
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const std::string &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // https://github.com/google/googletest/blob/master/googletest/docs/advanced.md // . Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
5332
5333
5334
5335
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const std::string &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. // Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
4348
4349
4350
4351
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const String &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestSuite and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // https://github.com/google/googletest/blob/master/googletest/docs/advanced.md // . Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
5493
5494
5495
5496
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (auto* test_suite : test_suites_) { const std::string& test_suite_name = test_suite->name(); test_suite->set_should_run(false);

[CVE-2020-0470_1.diff] gtest.cc #22
-AssertionResult HasOneFailure(const char* /* results_expr */, - const char* /* type_expr */, - const char* /* substr_expr */, - const TestPartResultArray& results, - TestPartResult::Type type, - const string& substr) { - const std::string expected(type == TestPartResult::kFatalFailure ? - "1 fatal failure" : - "1 non-fatal failure"); +static AssertionResult HasOneFailure(const char * /* results_expr */, + const char * /* type_expr */, + const char * /* substr_expr */, + const TestPartResultArray &results, + TestPartResult::Type type, + const std::string &substr) { + const std::string expected(type == TestPartResult::kFatalFailure + ? "1 fatal failure" + : "1 non-fatal failure");
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
621
622
623
624
625
626
627
628
629
630
return GetTypeId<Test>(); } // The value of GetTestTypeId() as seen from within the Google Test // library. This is solely for testing GetTestTypeId(). extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); // This predicate-formatter checks that 'results' contains a test part // failure of the given type and that the failure message contains the // given substring.
+ show +
631
632
633
634
635
636
637
638
639
AssertionResult HasOneFailure(const char* /* results_expr */, const char* /* type_expr */, const char* /* substr_expr */, const TestPartResultArray& results, TestPartResult::Type type, const string& substr) { const std::string expected(type == TestPartResult::kFatalFailure ? "1 fatal failure" : "1 non-fatal failure");
+ show +
640
641
642
643
644
645
646
647
648
649
Message msg; if (results.size() != 1) { msg << "Expected: " << expected << "\n" << " Actual: " << results.size() << " failures"; for (int i = 0; i < results.size(); i++) { msg << "\n" << results.GetTestPartResult(i); } return AssertionFailure() << msg; }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
return GetTypeId<Test>(); } // The value of GetTestTypeId() as seen from within the Google Test // library. This is solely for testing GetTestTypeId(). extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); // This predicate-formatter checks that 'results' contains a test part // failure of the given type and that the failure message contains the // given substring.
+ show +
2079
2080
2081
2082
2083
2084
2085
2086
2087
AssertionResult HasOneFailure(const char* /* results_expr */, const char* /* type_expr */, const char* /* substr_expr */, const TestPartResultArray& results, TestPartResult::Type type, const string& substr) { const std::string expected(type == TestPartResult::kFatalFailure ? "1 fatal failure" : "1 non-fatal failure");
+ show +
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
Message msg; if (results.size() != 1) { msg << "Expected: " << expected << "\n" << " Actual: " << results.size() << " failures"; for (int i = 0; i < results.size(); i++) { msg << "\n" << results.GetTestPartResult(i); } return AssertionFailure() << msg; }

[CVE-2020-0470_1.diff] gtest.cc #24
-SingleFailureChecker:: SingleFailureChecker( - const TestPartResultArray* results, - TestPartResult::Type type, - const string& substr) - : results_(results), - type_(type), - substr_(substr) {} +SingleFailureChecker::SingleFailureChecker(const TestPartResultArray *results, + TestPartResult::Type type, + const std::string &substr) + : results_(results), type_(type), substr_(substr) {}
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
660
661
662
663
664
665
666
667
668
669
<< " Actual:\n" << r; } return AssertionSuccess(); } // The constructor of SingleFailureChecker remembers where to look up // test part results, what type of failure we expect, and what // substring the failure message should contain.
+ show +
670
671
672
673
674
675
676
SingleFailureChecker:: SingleFailureChecker( const TestPartResultArray* results, TestPartResult::Type type, const string& substr) : results_(results), type_(type), substr_(substr) {}
+ show +
677
678
679
680
681
682
683
684
685
686
// The destructor of SingleFailureChecker verifies that the given // TestPartResultArray contains exactly one failure that has the given // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. SingleFailureChecker::~SingleFailureChecker() { EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); } DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
<< " Actual:\n" << r; } return AssertionSuccess(); } // The constructor of SingleFailureChecker remembers where to look up // test part results, what type of failure we expect, and what // substring the failure message should contain.
+ show +
2118
2119
2120
2121
2122
2123
2124
SingleFailureChecker:: SingleFailureChecker( const TestPartResultArray* results, TestPartResult::Type type, const string& substr) : results_(results), type_(type), substr_(substr) {}
+ show +
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
// The destructor of SingleFailureChecker verifies that the given // TestPartResultArray contains exactly one failure that has the given // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. SingleFailureChecker::~SingleFailureChecker() { EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); } DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
634
635
636
637
638
639
640
641
642
643
<< " Actual:\n" << r; } return AssertionSuccess(); } // The constructor of SingleFailureChecker remembers where to look up // test part results, what type of failure we expect, and what // substring the failure message should contain.
+ show +
644
645
646
647
648
649
650
SingleFailureChecker:: SingleFailureChecker( const TestPartResultArray* results, TestPartResult::Type type, const string& substr) : results_(results), type_(type), substr_(substr) {}
+ show +
651
652
653
654
655
656
657
658
659
660
// The destructor of SingleFailureChecker verifies that the given // TestPartResultArray contains exactly one failure that has the given // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. SingleFailureChecker::~SingleFailureChecker() { EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); } DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(

[CVE-2020-0470_1.diff] gtest.cc #57
-// The following two functions only make sense if the the system +// The following two functions only make sense if the system -// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. +// with 16 bit wchar_t (Windows, Cygwin) do use UTF-16. - return sizeof(wchar_t) == 2 && - (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; + return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && + (second & 0xFC00) == 0xDC00; -inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, - wchar_t second) { - const UInt32 mask = (1 << 10) - 1; - return (sizeof(wchar_t) == 2) ? - (((first & mask) << 10) | (second & mask)) + 0x10000 : - // This function should not be called when the condition is - // false, but we provide a sensible default in case it is. - static_cast<UInt32>(first); +inline uint32_t CreateCodePointFromUtf16SurrogatePair(wchar_t first, + wchar_t second) { + const auto first_u = static_cast<uint32_t>(first); + const auto second_u = static_cast<uint32_t>(second); + const uint32_t mask = (1 << 10) - 1; + return (sizeof(wchar_t) == 2) + ? (((first_u & mask) << 10) | (second_u & mask)) + 0x10000 + : + // This function should not be called when the condition is + // false, but we provide a sensible default in case it is. + first_u; -// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
} // The following two functions only make sense if the the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
} // The following two functions only make sense if the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
} // The following two functions only make sense if the the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
} // The following two functions only make sense if the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
} // The following two functions only make sense if the system // uses UTF-16 for wide string encoding. All supported systems // with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. // Determines if the arguments constitute UTF-16 surrogate pair // and thus should be combined into a single Unicode code point // using CreateCodePointFromUtf16SurrogatePair. inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ show +
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
return sizeof(wchar_t) == 2 && (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; } // Creates a Unicode code point from UTF16 surrogate pair. inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, wchar_t second) { const UInt32 mask = (1 << 10) - 1; return (sizeof(wchar_t) == 2) ? (((first & mask) << 10) | (second & mask)) + 0x10000 : // This function should not be called when the condition is // false, but we provide a sensible default in case it is. static_cast<UInt32>(first);
+ show +
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
} // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) // UTF-32 if sizeof(wchar_t) == 4 (on Linux) // Parameter str points to a null-terminated wide string. // Parameter num_chars may additionally limit the number // of wchar_t characters processed. -1 is used when the entire string // should be processed.

[CVE-2020-0470_1.diff] gtest.cc #138
- // Makes sure InitGoogleTest() was called. - if (!GTestIsInitialized()) { - printf("%s", - "\nThis test program did NOT call ::testing::InitGoogleTest " - "before calling RUN_ALL_TESTS(). Please fix it.\n"); - return false; - } + // True if and only if Google Test is initialized before RUN_ALL_TESTS() is + // called. + const bool gtest_is_initialized_before_run_all_tests = GTestIsInitialized(); - if (g_help_flag) - return true; + if (g_help_flag) return true;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
// returns true if all tests are successful. If any exception is // thrown during a test, the test is considered to be failed, but the // rest of the tests will still be run. // // When parameterized tests are enabled, it expands and registers // parameterized tests first in RegisterParameterizedTests(). // All other functions called from RunAllTests() may safely assume that // parameterized tests are ready to be counted and run. bool UnitTestImpl::RunAllTests() { // Makes sure InitGoogleTest() was called.
+ show +
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
if (!GTestIsInitialized()) { printf("%s", "\nThis test program did NOT call ::testing::InitGoogleTest " "before calling RUN_ALL_TESTS(). Please fix it.\n"); return false; } // Do not run any test if the --help flag was specified. if (g_help_flag) return true;
+ show +
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
// Repeats the call to the post-flag parsing initialization in case the // user didn't call InitGoogleTest. PostFlagParsingInit(); // Even if sharding is not on, test runners may want to use the // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding // protocol. internal::WriteToShardStatusFileIfNeeded();
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
// returns true if all tests are successful. If any exception is // thrown during a test, the test is considered to be failed, but the // rest of the tests will still be run. // // When parameterized tests are enabled, it expands and registers // parameterized tests first in RegisterParameterizedTests(). // All other functions called from RunAllTests() may safely assume that // parameterized tests are ready to be counted and run. bool UnitTestImpl::RunAllTests() { // Makes sure InitGoogleTest() was called.
+ show +
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
if (!GTestIsInitialized()) { printf("%s", "\nThis test program did NOT call ::testing::InitGoogleTest " "before calling RUN_ALL_TESTS(). Please fix it.\n"); return false; } // Do not run any test if the --help flag was specified. if (g_help_flag) return true;
+ show +
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
// Repeats the call to the post-flag parsing initialization in case the // user didn't call InitGoogleTest. PostFlagParsingInit(); // Even if sharding is not on, test runners may want to use the // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding // protocol. internal::WriteToShardStatusFileIfNeeded();
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
// returns true if all tests are successful. If any exception is // thrown during a test, the test is considered to be failed, but the // rest of the tests will still be run. // // When parameterized tests are enabled, it expands and registers // parameterized tests first in RegisterParameterizedTests(). // All other functions called from RunAllTests() may safely assume that // parameterized tests are ready to be counted and run. bool UnitTestImpl::RunAllTests() { // Makes sure InitGoogleTest() was called.
+ show +
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
if (!GTestIsInitialized()) { printf("%s", "\nThis test program did NOT call ::testing::InitGoogleTest " "before calling RUN_ALL_TESTS(). Please fix it.\n"); return false; } // Do not run any test if the --help flag was specified. if (g_help_flag) return true;
+ show +
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
// Repeats the call to the post-flag parsing initialization in case the // user didn't call InitGoogleTest. PostFlagParsingInit(); // Even if sharding is not on, test runners may want to use the // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding // protocol. internal::WriteToShardStatusFileIfNeeded();

[CVE-2020-0470_1.diff] gtest.cc #145
+ if (!gtest_is_initialized_before_run_all_tests) { + ColoredPrintf( + COLOR_RED, + "\nIMPORTANT NOTICE - DO NOT IGNORE:\n" + "This test program did NOT call " GTEST_INIT_GOOGLE_TEST_NAME_ + "() before calling RUN_ALL_TESTS(). This is INVALID. Soon " GTEST_NAME_ + " will start to enforce the valid usage. " + "Please fix it ASAP, or IT WILL START TO FAIL.\n"); // NOLINT +#if GTEST_FOR_GOOGLE_ + ColoredPrintf(COLOR_RED, + "For more details, see http://wiki/Main/ValidGUnitMain.\n"); +#endif // GTEST_FOR_GOOGLE_ + } + - const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); - if (test_shard_file != NULL) { - FILE* const file = posix::FOpen(test_shard_file, "w"); - if (file == NULL) { + const char *const test_shard_file = posix::GetEnv(kTestShardStatusFile); + if (test_shard_file != nullptr) { + FILE *const file = posix::FOpen(test_shard_file, "w"); + if (file == nullptr) {
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
4694
4695
4696
4697
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
6142
6143
6144
6145
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
} return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
5236
5237
5238
5239
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/fmtlib/test/gmock-gtest-all.cc
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
5694
5695
5696
5697
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
repeater->OnTestProgramEnd(*parent_); return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this // function will write over it. If the variable is present, but the file cannot // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded() {
+ show +
4252
4253
4254
4255
const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); if (test_shard_file != NULL) { FILE* const file = posix::FOpen(test_shard_file, "w"); if (file == NULL) {
+ show +
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
ColoredPrintf(COLOR_RED, "Could not write to the test shard status file \"%s\" " "specified by the %s environment variable.\n", test_shard_file, kTestShardStatusFile); fflush(stdout); exit(EXIT_FAILURE); } fclose(file); } }

[CVE-2020-0470_1.diff] gtest.cc #149
-// each TestCase and TestInfo object. +// each TestSuite and TestInfo object. -// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. -// Returns the number of tests that should run. +// https://github.com/google/googletest/blob/master/googletest/docs/advanced.md +// . Returns the number of tests that should run. - const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? - Int32FromEnvOrDie(kTestTotalShards, -1) : -1; - const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? - Int32FromEnvOrDie(kTestShardIndex, -1) : -1; + const int32_t total_shards = shard_tests == HONOR_SHARDING_PROTOCOL + ? Int32FromEnvOrDie(kTestTotalShards, -1) + : -1; + const int32_t shard_index = shard_tests == HONOR_SHARDING_PROTOCOL + ? Int32FromEnvOrDie(kTestShardIndex, -1) + : -1;
/media/esteban/ACOS/dotOS/external/llvm-project/llvm/utils/unittest/googletest/src/gtest.cc
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. // Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
4790
4791
4792
4793
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const std::string &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/rust/crates/quiche/deps/boringssl/src/third_party/googletest/src/gtest.cc
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestSuite and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // https://github.com/google/googletest/blob/master/googletest/docs/advanced.md // . Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
5431
5432
5433
5434
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (auto* test_suite : test_suites_) { const std::string& test_suite_name = test_suite->name(); test_suite->set_should_run(false);
/media/esteban/ACOS/dotOS/external/rust/crates/grpcio-sys/grpc/third_party/cares/cares/test/gmock-1.8.0/gmock-gtest-all.cc
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. // Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
6238
6239
6240
6241
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const std::string &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/third_party/googletest/src/src/gtest.cc
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // https://github.com/google/googletest/blob/master/googletest/docs/advanced.md // . Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
5332
5333
5334
5335
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const std::string &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/llvm/utils/unittest/googletest/src/gtest.cc
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestCase and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. // Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
4348
4349
4350
4351
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (size_t i = 0; i < test_cases_.size(); i++) { TestCase* const test_case = test_cases_[i]; const String &test_case_name = test_case->name();
/media/esteban/ACOS/dotOS/external/mesa3d/src/gtest/src/gtest.cc
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
} // Compares the name of each test with the user-specified filter to // decide whether the test should be run, then records the result in // each TestSuite and TestInfo object. // If shard_tests == true, further filters tests based on sharding // variables in the environment - see // https://github.com/google/googletest/blob/master/googletest/docs/advanced.md // . Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ show +
5493
5494
5495
5496
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestTotalShards, -1) : -1; const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+ show +
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
// num_runnable_tests are the number of tests that will // run across all shards (i.e., match filter and are not disabled). // num_selected_tests are the number of tests to be run on // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; for (auto* test_suite : test_suites_) { const std::string& test_suite_name = test_suite->name(); test_suite->set_should_run(false);

[CVE-2019-2228_1.diff] md5.c #2
-#define T1 0xd76aa478 -#define T2 0xe8c7b756 -#define T3 0x242070db -#define T4 0xc1bdceee -#define T5 0xf57c0faf -#define T6 0x4787c62a -#define T7 0xa8304613 -#define T8 0xfd469501 -#define T9 0x698098d8 -#define T10 0x8b44f7af -#define T11 0xffff5bb1 -#define T12 0x895cd7be -#define T13 0x6b901122 -#define T14 0xfd987193 -#define T15 0xa679438e -#define T16 0x49b40821 -#define T17 0xf61e2562 -#define T18 0xc040b340 -#define T19 0x265e5a51 -#define T20 0xe9b6c7aa -#define T21 0xd62f105d -#define T22 0x02441453 -#define T23 0xd8a1e681 -#define T24 0xe7d3fbc8 -#define T25 0x21e1cde6 -#define T26 0xc33707d6 -#define T27 0xf4d50d87 -#define T28 0x455a14ed -#define T29 0xa9e3e905 -#define T30 0xfcefa3f8 -#define T31 0x676f02d9 -#define T32 0x8d2a4c8a -#define T33 0xfffa3942 -#define T34 0x8771f681 -#define T35 0x6d9d6122 -#define T36 0xfde5380c -#define T37 0xa4beea44 -#define T38 0x4bdecfa9 -#define T39 0xf6bb4b60 -#define T40 0xbebfbc70 -#define T41 0x289b7ec6 -#define T42 0xeaa127fa -#define T43 0xd4ef3085 -#define T44 0x04881d05 -#define T45 0xd9d4d039 -#define T46 0xe6db99e5 -#define T47 0x1fa27cf8 -#define T48 0xc4ac5665 -#define T49 0xf4292244 -#define T50 0x432aff97 -#define T51 0xab9423a7 -#define T52 0xfc93a039 -#define T53 0x655b59c3 -#define T54 0x8f0ccc92 -#define T55 0xffeff47d -#define T56 0x85845dd1 -#define T57 0x6fa87e4f -#define T58 0xfe2ce6e0 -#define T59 0xa3014314 -#define T60 0x4e0811a1 -#define T61 0xf7537e82 -#define T62 0xbd3af235 -#define T63 0x2ad7d2bb -#define T64 0xeb86d391 +#if !defined(__APPLE__) && !defined(HAVE_GNUTLS) +# define T1 0xd76aa478 +# define T2 0xe8c7b756 +# define T3 0x242070db +# define T4 0xc1bdceee +# define T5 0xf57c0faf +# define T6 0x4787c62a +# define T7 0xa8304613 +# define T8 0xfd469501 +# define T9 0x698098d8 +# define T10 0x8b44f7af +# define T11 0xffff5bb1 +# define T12 0x895cd7be +# define T13 0x6b901122 +# define T14 0xfd987193 +# define T15 0xa679438e +# define T16 0x49b40821 +# define T17 0xf61e2562 +# define T18 0xc040b340 +# define T19 0x265e5a51 +# define T20 0xe9b6c7aa +# define T21 0xd62f105d +# define T22 0x02441453 +# define T23 0xd8a1e681 +# define T24 0xe7d3fbc8 +# define T25 0x21e1cde6 +# define T26 0xc33707d6 +# define T27 0xf4d50d87 +# define T28 0x455a14ed +# define T29 0xa9e3e905 +# define T30 0xfcefa3f8 +# define T31 0x676f02d9 +# define T32 0x8d2a4c8a +# define T33 0xfffa3942 +# define T34 0x8771f681 +# define T35 0x6d9d6122 +# define T36 0xfde5380c +# define T37 0xa4beea44 +# define T38 0x4bdecfa9 +# define T39 0xf6bb4b60 +# define T40 0xbebfbc70 +# define T41 0x289b7ec6 +# define T42 0xeaa127fa +# define T43 0xd4ef3085 +# define T44 0x04881d05 +# define T45 0xd9d4d039 +# define T46 0xe6db99e5 +# define T47 0x1fa27cf8 +# define T48 0xc4ac5665 +# define T49 0xf4292244 +# define T50 0x432aff97 +# define T51 0xab9423a7 +# define T52 0xfc93a039 +# define T53 0x655b59c3 +# define T54 0x8f0ccc92 +# define T55 0xffeff47d +# define T56 0x85845dd1 +# define T57 0x6fa87e4f +# define T58 0xfe2ce6e0 +# define T59 0xa3014314 +# define T60 0x4e0811a1 +# define T61 0xf7537e82 +# define T62 0xbd3af235 +# define T63 0x2ad7d2bb +# define T64 0xeb86d391
/media/esteban/ACOS/dotOS/external/libcups/cups/md5.c
37
38
39
40
41
42
43
44
45
46
1999-11-04 lpd Edited comments slightly for automatic TOC extraction. 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). 1999-05-03 lpd Original version. */ #include "md5-internal.h" #include "string-private.h" #if !defined(__APPLE__)
+ show +
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# define T1 0xd76aa478 # define T2 0xe8c7b756 # define T3 0x242070db # define T4 0xc1bdceee # define T5 0xf57c0faf # define T6 0x4787c62a # define T7 0xa8304613 # define T8 0xfd469501 # define T9 0x698098d8 # define T10 0x8b44f7af # define T11 0xffff5bb1 # define T12 0x895cd7be # define T13 0x6b901122 # define T14 0xfd987193 # define T15 0xa679438e # define T16 0x49b40821 # define T17 0xf61e2562 # define T18 0xc040b340 # define T19 0x265e5a51 # define T20 0xe9b6c7aa # define T21 0xd62f105d # define T22 0x02441453 # define T23 0xd8a1e681 # define T24 0xe7d3fbc8 # define T25 0x21e1cde6 # define T26 0xc33707d6 # define T27 0xf4d50d87 # define T28 0x455a14ed # define T29 0xa9e3e905 # define T30 0xfcefa3f8 # define T31 0x676f02d9 # define T32 0x8d2a4c8a # define T33 0xfffa3942 # define T34 0x8771f681 # define T35 0x6d9d6122 # define T36 0xfde5380c # define T37 0xa4beea44 # define T38 0x4bdecfa9 # define T39 0xf6bb4b60 # define T40 0xbebfbc70 # define T41 0x289b7ec6 # define T42 0xeaa127fa # define T43 0xd4ef3085 # define T44 0x04881d05 # define T45 0xd9d4d039 # define T46 0xe6db99e5 # define T47 0x1fa27cf8 # define T48 0xc4ac5665 # define T49 0xf4292244 # define T50 0x432aff97 # define T51 0xab9423a7 # define T52 0xfc93a039 # define T53 0x655b59c3 # define T54 0x8f0ccc92 # define T55 0xffeff47d # define T56 0x85845dd1 # define T57 0x6fa87e4f # define T58 0xfe2ce6e0 # define T59 0xa3014314 # define T60 0x4e0811a1 # define T61 0xf7537e82 # define T62 0xbd3af235 # define T63 0x2ad7d2bb # define T64 0xeb86d391
+ show +
111
112
113
114
115
116
117
118
119
120
static void _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/) { unsigned int a = pms->abcd[0], b = pms->abcd[1], c = pms->abcd[2], d = pms->abcd[3]; unsigned int t; # ifndef ARCH_IS_BIG_ENDIAN

[CVE-2019-2228_1.diff] md5.c #3
-#ifndef ARCH_IS_BIG_ENDIAN -# define ARCH_IS_BIG_ENDIAN 1 /* slower, default implementation */ -#endif -#if ARCH_IS_BIG_ENDIAN +# ifndef ARCH_IS_BIG_ENDIAN +# define ARCH_IS_BIG_ENDIAN 1 /* slower, default implementation */ +# endif +# if ARCH_IS_BIG_ENDIAN
/media/esteban/ACOS/dotOS/external/libcups/cups/md5.c
110
111
112
113
114
115
116
117
118
119
# define T64 0xeb86d391 static void _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/) { unsigned int a = pms->abcd[0], b = pms->abcd[1], c = pms->abcd[2], d = pms->abcd[3]; unsigned int t;
+ show +
120
121
122
123
# ifndef ARCH_IS_BIG_ENDIAN # define ARCH_IS_BIG_ENDIAN 1 /* slower, default implementation */ # endif # if ARCH_IS_BIG_ENDIAN
+ show +
124
125
126
127
128
129
130
131
132
133
/* * On big-endian machines, we must arrange the bytes in the right * order. (This also works on machines of unknown byte order.) */ unsigned int X[16]; const unsigned char *xp = data; int i; for (i = 0; i < 16; ++i, xp += 4)

[CVE-2019-2228_1.diff] md5.c #5
-#endif +# endif -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) +# define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) -#define F(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define SET(a, b, c, d, k, s, Ti)\ +# define F(x, y, z) (((x) & (y)) | (~(x) & (z))) +# define SET(a, b, c, d, k, s, Ti)\
/media/esteban/ACOS/dotOS/external/libcups/cups/md5.c
144
145
146
147
148
149
150
151
152
153
const unsigned int *X; if (!((data - (const unsigned char *)0) & 3)) { /* data are properly aligned */ X = (const unsigned int *)data; } else { /* not aligned */ memcpy(xbuf, data, 64); X = xbuf; }
+ show +
154
155
156
157
158
159
160
161
162
# endif # define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) /* Round 1. */ /* Let [abcd k s i] denote the operation a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ # define F(x, y, z) (((x) & (y)) | (~(x) & (z))) # define SET(a, b, c, d, k, s, Ti)\
+ show +
163
164
165
166
167
168
169
170
171
172
t = a + F(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b /* Do the following 16 operations. */ SET(a, b, c, d, 0, 7, T1); SET(d, a, b, c, 1, 12, T2); SET(c, d, a, b, 2, 17, T3); SET(b, c, d, a, 3, 22, T4); SET(a, b, c, d, 4, 7, T5); SET(d, a, b, c, 5, 12, T6); SET(c, d, a, b, 6, 17, T7);
/media/esteban/ACOS/dotOS/external/python/cpython2/Modules/md5.c
185
186
187
188
189
190
191
192
193
194
int i; # if BYTE_ORDER == 0 X = xbuf; /* (dynamic only) */ # else # define xbuf X /* (static only) */ # endif for (i = 0; i < 16; ++i, xp += 4) xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); }
+ show +
195
196
197
198
199
200
201
202
203
204
#endif } #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) /* Round 1. */ /* Let [abcd k s i] denote the operation a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ #define F(x, y, z) (((x) & (y)) | (~(x) & (z))) #define SET(a, b, c, d, k, s, Ti)\
+ show +
205
206
207
208
209
210
211
212
213
214
t = a + F(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b /* Do the following 16 operations. */ SET(a, b, c, d, 0, 7, T1); SET(d, a, b, c, 1, 12, T2); SET(c, d, a, b, 2, 17, T3); SET(b, c, d, a, 3, 22, T4); SET(a, b, c, d, 4, 7, T5); SET(d, a, b, c, 5, 12, T6); SET(c, d, a, b, 6, 17, T7);
/media/esteban/ACOS/dotOS/external/bson/src/md5.c
184
185
186
187
188
189
190
191
192
193
int i; # if BYTE_ORDER == 0 X = xbuf; /* (dynamic only) */ # else # define xbuf X /* (static only) */ # endif for (i = 0; i < 16; ++i, xp += 4) xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); }
+ show +
194
195
196
197
198
199
200
201
202
203
#endif } #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) /* Round 1. */ /* Let [abcd k s i] denote the operation a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ #define F(x, y, z) (((x) & (y)) | (~(x) & (z))) #define SET(a, b, c, d, k, s, Ti)\
+ show +
204
205
206
207
208
209
210
211
212
213
t = a + F(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b /* Do the following 16 operations. */ SET(a, b, c, d, 0, 7, T1); SET(d, a, b, c, 1, 12, T2); SET(c, d, a, b, 2, 17, T3); SET(b, c, d, a, 3, 22, T4); SET(a, b, c, d, 4, 7, T5); SET(d, a, b, c, 5, 12, T6); SET(c, d, a, b, 6, 17, T7);

[CVE-2019-2228_1.diff] file-private.h #3
-struct _cups_file_s /**** CUPS file structure... ****/ - -{ - int fd; /* File descriptor */ - char mode, /* Mode ('r' or 'w') */ - compressed, /* Compression used? */ - is_stdio, /* stdin/out/err? */ - eof, /* End of file? */ - buf[4096], /* Buffer */ - *ptr, /* Pointer into buffer */ - *end; /* End of buffer data */ - off_t pos, /* Position in file */ - bufpos; /* File position for start of buffer */ - -#ifdef HAVE_LIBZ - z_stream stream; /* (De)compression stream */ - Bytef cbuf[4096]; /* (De)compression buffer */ - uLong crc; /* (De)compression CRC */ -#endif /* HAVE_LIBZ */ - - char *printf_buffer; /* cupsFilePrintf buffer */ - size_t printf_size; /* Size of cupsFilePrintf buffer */ -}; -
/media/esteban/ACOS/dotOS/external/libcups/cups/file.c
24
25
26
27
28
29
30
31
32
33
# ifdef HAVE_LIBZ # include <zlib.h> # endif /* HAVE_LIBZ */ /* * Internal structures... */
+ show +
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
struct _cups_file_s /**** CUPS file structure... ****/ { int fd; /* File descriptor */ char mode, /* Mode ('r' or 'w') */ compressed, /* Compression used? */ is_stdio, /* stdin/out/err? */ eof, /* End of file? */ buf[4096], /* Buffer */ *ptr, /* Pointer into buffer */ *end; /* End of buffer data */ off_t pos, /* Position in file */ bufpos; /* File position for start of buffer */ #ifdef HAVE_LIBZ z_stream stream; /* (De)compression stream */ Bytef cbuf[4096]; /* (De)compression buffer */ uLong crc; /* (De)compression CRC */ #endif /* HAVE_LIBZ */ char *printf_buffer; /* cupsFilePrintf buffer */ size_t printf_size; /* Size of cupsFilePrintf buffer */ };
+ show +
57
58
59
60
61
62
63
64
65
66
/* * Local functions... */ #ifdef HAVE_LIBZ static ssize_t cups_compress(cups_file_t *fp, const char *buf, size_t bytes); #endif /* HAVE_LIBZ */ static ssize_t cups_fill(cups_file_t *fp);

[CVE-2019-2228_1.diff] http-private.h #6
-# endif /* !WIN32 */ - -# ifdef HAVE_LIBZ -# include <zlib.h> -# endif /* HAVE_LIBZ */ +# endif /* !_WIN32 */
/media/esteban/ACOS/dotOS/external/libcups/cups/http.c
21
22
23
24
25
26
27
28
29
30
#include <math.h> #ifdef _WIN32 # include <tchar.h> #else # include <signal.h> # include <sys/time.h> # include <sys/resource.h> #endif /* _WIN32 */ #ifdef HAVE_POLL # include <poll.h>
+ show +
31
32
33
34
#endif /* HAVE_POLL */ # ifdef HAVE_LIBZ # include <zlib.h> # endif /* HAVE_LIBZ */
+ show +
35
36
37
38
39
40
41
42
43
44
/* * Local functions... */ static void http_add_field(http_t *http, http_field_t field, const char *value, int append); #ifdef HAVE_LIBZ static void http_content_coding_finish(http_t *http); static void http_content_coding_start(http_t *http,

[CVE-2019-2228_1.diff] usersys.c #12
- cc->encryption = (http_encryption_t)-1; - cc->trust_first = -1; - cc->any_root = -1; - cc->expired_certs = -1; - cc->validate_certs = -1; +#ifdef HAVE_SSL + cc->ssl_min_version = _HTTP_TLS_1_0; + cc->ssl_max_version = _HTTP_TLS_MAX; +#endif /* HAVE_SSL */ + cc->encryption = (http_encryption_t)-1; + cc->trust_first = -1; + cc->any_root = -1; + cc->expired_certs = -1; + cc->validate_certs = -1;
/media/esteban/ACOS/dotOS/external/libcups/cups/usersys.c
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
cc->uatokens = _CUPS_UATOKENS_MINIMAL; #if defined(__APPLE__) && !TARGET_OS_OSX cups_set_user(cc, "mobile"); #endif /* __APPLE__ && !TARGET_OS_OSX */ #ifdef HAVE_SSL cc->ssl_min_version = _HTTP_TLS_1_0; cc->ssl_max_version = _HTTP_TLS_MAX; #endif /* HAVE_SSL */
+ show +
1273
1274
1275
1276
1277
cc->encryption = (http_encryption_t)-1; cc->trust_first = -1; cc->any_root = -1; cc->expired_certs = -1; cc->validate_certs = -1;
+ show +
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
/* * Load settings from the org.cups.PrintingPrefs plist (which trump * everything...) */ #if defined(__APPLE__) char sval[1024]; /* String value */ # ifdef HAVE_SSL int bval; /* Boolean value */

[CVE-2023-40093_1.diff] BUILD.gn #11
- } - if (pdf_enable_xfa) { - deps += [ - "fxbarcode:unittests", - "xfa/fde:unittests", - "xfa/fgas:unittests", - "xfa/fgas/layout:unittests", - "xfa/fxfa:unittests", - "xfa/fxfa/fm2js:unittests", - "xfa/fxfa/parser:unittests", - ] + if (pdf_enable_xfa) { + deps += [ + "core/fxcrt/css:unittests", + "fxbarcode:unittests", + "xfa/fde:unittests", + "xfa/fgas/crt:unittests", + "xfa/fgas/font:unittests", + "xfa/fgas/layout:unittests", + "xfa/fxfa:unittests", + "xfa/fxfa/formcalc:unittests", + "xfa/fxfa/parser:unittests", + ] + }
/media/esteban/ACOS/dotOS/external/pdfium/BUILD.gn
248
249
250
251
252
253
254
255
256
257
if (is_android) { use_raw_android_executable = true } if (pdf_enable_v8) { configs += [ "//v8:external_startup_data" ] deps += [ "fxjs:unittests", "//v8", ]
+ show +
258
259
260
261
262
263
264
265
266
267
268
269
} if (pdf_enable_xfa) { deps += [ "fxbarcode:unittests", "xfa/fde:unittests", "xfa/fgas:unittests", "xfa/fgas/layout:unittests", "xfa/fxfa:unittests", "xfa/fxfa/fm2js:unittests", "xfa/fxfa/parser:unittests", ]
+ show +
270
271
272
273
274
275
276
277
278
279
} } group("pdfium_embeddertest_deps") { testonly = true public_deps = [ ":pdfium_public_headers", "core/fxcrt", "testing:embedder_test_support", "testing:test_support",

[CVE-2023-40093_1.diff] README.md #1
-Get the Chromium depot\_tools via the -[instructions](https://www.chromium.org/developers/how-tos/install-depot-tools). -This provides the gclient utility needed below and many other tools needed for -PDFium development. +PDFium uses the same build tooling as Chromium. See the platform-specific +Chromium build instructions to get started, but replace Chromium's +"Get the code" instructions with [PDFium's](#get-the-code). -Also install Python, Subversion, and Git and make sure they're in your path. - - -### Windows development - -PDFium uses the same build tool as Chromium: - -#### Open source contributors -Please refer to -[Chromium's Visual Studio set up](https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md#visual-studio) -for requirements and instructions on build environment configuration. - -Run `set DEPOT_TOOLS_WIN_TOOLCHAIN=0`, or set that variable in your global -environment. - -Compilation is done through Ninja, **not** Visual Studio. +* [Chromium Linux build instructions](https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md) +* [Chromium Mac build instructions](https://chromium.googlesource.com/chromium/src/+/main/docs/mac_build_instructions.md) +* [Chromium Windows build instructions](https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md)
/media/esteban/ACOS/dotOS/external/pdfium/README.md
1
2
3
4
# PDFium ## Prerequisites
+ show +
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Get the Chromium depot\_tools via the [instructions](https://www.chromium.org/developers/how-tos/install-depot-tools). This provides the gclient utility needed below and many other tools needed for PDFium development. Also install Python, Subversion, and Git and make sure they're in your path. ### Windows development PDFium uses the same build tool as Chromium: #### Open source contributors Please refer to [Chromium's Visual Studio set up](https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md#visual-studio) for requirements and instructions on build environment configuration. Run `set DEPOT_TOOLS_WIN_TOOLCHAIN=0`, or set that variable in your global environment. Compilation is done through Ninja, **not** Visual Studio.
+ show +
26
27
28
29
30
31
32
33
34
35
### CPU Architectures supported The default architecture for Windows, Linux, and Mac is "`x64`". On Windows, "`x86`" is also supported. GN parameter "`target_cpu = "x86"`" can be used to override the default value. If you specify Android build, the default CPU architecture will be "`arm`". It is expected that there are still some places lurking in the code which will not function properly on big-endian architectures. Bugs and/or patches are

[CVE-2023-40093_1.diff] README.md #9
-## Profiling - -Valgrind and other profiling tools do not work correctly with the standard build -setup that PDFium uses. You will need to add -`ro_segment_workaround_for_valgrind=true` to `args.gn` to get symbols to -correctly appear. -
/media/esteban/ACOS/dotOS/external/pdfium/README.md
216
217
218
219
220
221
222
223
224
225
## Code Coverage Code coverage reports for PDFium can be generated in Linux development environments. Details can be found [here](/docs/code-coverage.md). Chromium provides code coverage reports for PDFium [here](https://chromium-coverage.appspot.com/). PDFium is located in `third_party/pdfium` in Chromium's source code. This includes code coverage from PDFium's fuzzers.
+ show +
226
227
228
229
230
231
## Profiling Valgrind and other profiling tools do not work correctly with the standard build setup that PDFium uses. You will need to add `ro_segment_workaround_for_valgrind=true` to `args.gn` to get symbols to correctly appear.
+ show +
232
233
234
235
236
237
238
239
240
241
## Waterfall The current health of the source tree can be found [here](https://ci.chromium.org/p/pdfium/g/main/console). ## Community There are several mailing lists that are setup:

[CVE-2023-40093_1.diff] fx_crypt.cpp #4
+ uint32_t A = ctx->state[0]; + uint32_t B = ctx->state[1]; + uint32_t C = ctx->state[2]; + uint32_t D = ctx->state[3]; - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3];
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_sha.cpp
302
303
304
305
306
307
308
309
310
311
SHA_GET_UINT64(W[6], data, 48); SHA_GET_UINT64(W[7], data, 56); SHA_GET_UINT64(W[8], data, 64); SHA_GET_UINT64(W[9], data, 72); SHA_GET_UINT64(W[10], data, 80); SHA_GET_UINT64(W[11], data, 88); SHA_GET_UINT64(W[12], data, 96); SHA_GET_UINT64(W[13], data, 104); SHA_GET_UINT64(W[14], data, 112); SHA_GET_UINT64(W[15], data, 120);
+ show +
312
313
314
315
A = ctx->state[0]; B = ctx->state[1]; C = ctx->state[2]; D = ctx->state[3];
+ show +
316
317
318
319
320
321
322
323
324
325
E = ctx->state[4]; F = ctx->state[5]; G = ctx->state[6]; H = ctx->state[7]; for (int i = 0; i < 10; ++i) { uint64_t temp[8]; if (i < 2) { temp[0] = W[i * 8]; temp[1] = W[i * 8 + 1]; temp[2] = W[i * 8 + 2];
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt.cpp
47
48
49
50
51
52
53
54
55
56
GET_UINT32(X[12], data, 48); GET_UINT32(X[13], data, 52); GET_UINT32(X[14], data, 56); GET_UINT32(X[15], data, 60); #define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) #define P(a, b, c, d, k, s, t) \ { \ a += F(b, c, d) + X[k] + t; \ a = S(a, s) + b; \ }
+ show +
57
58
59
60
A = ctx->state[0]; B = ctx->state[1]; C = ctx->state[2]; D = ctx->state[3];
+ show +
61
62
63
64
65
66
67
68
69
70
#define F(x, y, z) (z ^ (x & (y ^ z))) P(A, B, C, D, 0, 7, 0xD76AA478); P(D, A, B, C, 1, 12, 0xE8C7B756); P(C, D, A, B, 2, 17, 0x242070DB); P(B, C, D, A, 3, 22, 0xC1BDCEEE); P(A, B, C, D, 4, 7, 0xF57C0FAF); P(D, A, B, C, 5, 12, 0x4787C62A); P(C, D, A, B, 6, 17, 0xA8304613); P(B, C, D, A, 7, 22, 0xFD469501); P(A, B, C, D, 8, 7, 0x698098D8);
/media/esteban/ACOS/dotOS/external/vboot_reference/firmware/lib/cryptolib/sha1.c
29
30
31
32
33
34
35
36
37
38
} static uint32_t ror31(uint32_t val) { return (val >> 31) | (val << 1); } static void SHA1_Transform(SHA1_CTX* ctx) { uint32_t W[80]; register uint32_t A, B, C, D, E; int t;
+ show +
39
40
41
42
A = ctx->state[0]; B = ctx->state[1]; C = ctx->state[2]; D = ctx->state[3];
+ show +
43
44
45
46
47
48
49
50
51
52
E = ctx->state[4]; #define SHA_F1(A,B,C,D,E,t) \ E += ror27(A) + \ (W[t] = bswap_32(ctx->buf.w[t])) + \ (D^(B&(C^D))) + 0x5A827999; \ B = ror2(B); for (t = 0; t < 15; t += 5) { SHA_F1(A,B,C,D,E,t + 0);
/media/esteban/ACOS/dotOS/external/vboot_reference/firmware/lib/cryptolib/sha1.c
186
187
188
189
190
191
192
193
194
195
tmp |= *p++ << 16; tmp |= *p++ << 8; tmp |= *p++; W[t] = tmp; } for(; t < 80; t++) { W[t] = rol(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]); }
+ show +
196
197
198
199
A = ctx->state[0]; B = ctx->state[1]; C = ctx->state[2]; D = ctx->state[3];
+ show +
200
201
202
203
204
205
206
207
208
209
E = ctx->state[4]; for(t = 0; t < 80; t++) { uint32_t tmp = rol(5,A) + E + W[t]; if (t < 20) tmp += (D^(B&(C^D))) + 0x5A827999; else if ( t < 40) tmp += (B^C^D) + 0x6ED9EBA1; else if ( t < 60)
/media/esteban/ACOS/dotOS/external/vboot_reference/firmware/2lib/2sha1.c
36
37
38
39
40
41
42
43
44
45
return (val >> 31) | (val << 1); } static void sha1_transform(struct vb2_sha1_context *ctx) { /* Note that this array uses 80*4=320 bytes of stack */ uint32_t W[80]; register uint32_t A, B, C, D, E; int t;
+ show +
46
47
48
49
A = ctx->state[0]; B = ctx->state[1]; C = ctx->state[2]; D = ctx->state[3];
+ show +
50
51
52
53
54
55
56
57
58
59
E = ctx->state[4]; #define SHA_F1(A,B,C,D,E,t) \ E += ror27(A) + \ (W[t] = bswap_32(ctx->buf.w[t])) + \ (D^(B&(C^D))) + 0x5A827999; \ B = ror2(B); for (t = 0; t < 15; t += 5) { SHA_F1(A,B,C,D,E,t + 0);
/media/esteban/ACOS/dotOS/external/vboot_reference/firmware/2lib/2sha1.c
199
200
201
202
203
204
205
206
207
208
tmp |= *p++ << 16; tmp |= *p++ << 8; tmp |= *p++; W[t] = tmp; } for(; t < 80; t++) { W[t] = rol(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]); }
+ show +
209
210
211
212
A = ctx->state[0]; B = ctx->state[1]; C = ctx->state[2]; D = ctx->state[3];
+ show +
213
214
215
216
217
218
219
220
221
222
E = ctx->state[4]; for(t = 0; t < 80; t++) { uint32_t tmp = rol(5,A) + E + W[t]; if (t < 20) tmp += (D^(B&(C^D))) + 0x5A827999; else if ( t < 40) tmp += (B^C^D) + 0x6ED9EBA1; else if ( t < 60)

[CVE-2023-40093_1.diff] fx_crypt_sha.cpp #3
+#include <string.h> + -#define SHA384_P(a, b, c, d, e, f, g, h, x, K) \ - { \ - temp1 = h + SHA384_S3(e) + SHA384_F1(e, f, g) + K + x; \ - temp2 = SHA384_S2(a) + SHA384_F0(a, b, c); \ - d += temp1; \ - h = temp1 + temp2; \ +#define SHA384_P(a, b, c, d, e, f, g, h, x, K) \ + { \ + uint64_t temp1 = h + SHA384_S3(e) + SHA384_F1(e, f, g) + K + x; \ + uint64_t temp2 = SHA384_S2(a) + SHA384_F0(a, b, c); \ + d += temp1; \ + h = temp1 + temp2; \
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_sha.cpp
41
42
43
44
45
46
47
48
49
50
#define SHA384_F1(x, y, z) (z ^ (x & (y ^ z))) #define SHA384_SHR(x, n) (x >> n) #define SHA384_ROTR(x, n) (SHA384_SHR(x, n) | x << (64 - n)) #define SHA384_S0(x) (SHA384_ROTR(x, 1) ^ SHA384_ROTR(x, 8) ^ SHA384_SHR(x, 7)) #define SHA384_S1(x) \ (SHA384_ROTR(x, 19) ^ SHA384_ROTR(x, 61) ^ SHA384_SHR(x, 6)) #define SHA384_S2(x) \ (SHA384_ROTR(x, 28) ^ SHA384_ROTR(x, 34) ^ SHA384_ROTR(x, 39)) #define SHA384_S3(x) \ (SHA384_ROTR(x, 14) ^ SHA384_ROTR(x, 18) ^ SHA384_ROTR(x, 41))
+ show +
51
52
53
54
55
56
#define SHA384_P(a, b, c, d, e, f, g, h, x, K) \ { \ temp1 = h + SHA384_S3(e) + SHA384_F1(e, f, g) + K + x; \ temp2 = SHA384_S2(a) + SHA384_F0(a, b, c); \ d += temp1; \ h = temp1 + temp2; \
+ show +
57
58
59
60
61
62
63
64
65
66
} #define SHA384_R(t) \ (W[t] = SHA384_S1(W[t - 2]) + W[t - 7] + SHA384_S0(W[t - 15]) + W[t - 16]) #define rol(x, y) (((x) << (y)) | (((unsigned int)x) >> (32 - y))) #define SHR(x, n) ((x & 0xFFFFFFFF) >> n) #define ROTR(x, n) (SHR(x, n) | (x << (32 - n))) #define S0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3)) #define S1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10)) #define S2(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22))

[CVE-2023-40093_1.diff] fx_crypt_sha.cpp #4
-#define PS(a, b, c, d, e, f, g, h, x, K) \ - { \ - temp1 = h + S3(e) + F1(e, f, g) + K + x; \ - temp2 = S2(a) + F0(a, b, c); \ - d += temp1; \ - h = temp1 + temp2; \ +#define PS(a, b, c, d, e, f, g, h, x, K) \ + { \ + uint32_t temp1 = h + S3(e) + F1(e, f, g) + K + x; \ + uint32_t temp2 = S2(a) + F0(a, b, c); \ + d += temp1; \ + h = temp1 + temp2; \
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_sha.cpp
61
62
63
64
65
66
67
68
69
70
#define rol(x, y) (((x) << (y)) | (((unsigned int)x) >> (32 - y))) #define SHR(x, n) ((x & 0xFFFFFFFF) >> n) #define ROTR(x, n) (SHR(x, n) | (x << (32 - n))) #define S0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3)) #define S1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10)) #define S2(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) #define S3(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) #define F0(x, y, z) ((x & y) | (z & (x | y))) #define F1(x, y, z) (z ^ (x & (y ^ z))) #define R(t) (W[t] = S1(W[t - 2]) + W[t - 7] + S0(W[t - 15]) + W[t - 16])
+ show +
71
72
73
74
75
76
#define PS(a, b, c, d, e, f, g, h, x, K) \ { \ temp1 = h + S3(e) + F1(e, f, g) + K + x; \ temp2 = S2(a) + F0(a, b, c); \ d += temp1; \ h = temp1 + temp2; \
+ show +
77
78
79
80
81
82
83
84
85
86
} namespace { void SHA_Core_Init(unsigned int h[5]) { h[0] = 0x67452301; h[1] = 0xefcdab89; h[2] = 0x98badcfe; h[3] = 0x10325476; h[4] = 0xc3d2e1f0;

[CVE-2023-40093_1.diff] fx_crypt_sha.cpp #6
- a = digest[0]; - b = digest[1]; - c = digest[2]; - d = digest[3]; - e = digest[4]; + unsigned int a = digest[0]; + unsigned int b = digest[1]; + unsigned int c = digest[2]; + unsigned int d = digest[3]; + unsigned int e = digest[4];
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_sha.cpp
90
91
92
93
94
95
96
97
98
99
unsigned int w[80]; unsigned int a, b, c, d, e; int t; for (t = 0; t < 16; t++) { w[t] = block[t]; } for (t = 16; t < 80; t++) { unsigned int tmp = w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]; w[t] = rol(tmp, 1); }
+ show +
100
101
102
103
104
a = digest[0]; b = digest[1]; c = digest[2]; d = digest[3]; e = digest[4];
+ show +
105
106
107
108
109
110
111
112
113
114
for (t = 0; t < 20; t++) { unsigned int tmp = rol(a, 5) + ((b & c) | (d & ~b)) + e + w[t] + 0x5a827999; e = d; d = c; c = rol(b, 30); b = a; a = tmp; } for (t = 20; t < 40; t++) { unsigned int tmp = rol(a, 5) + (b ^ c ^ d) + e + w[t] + 0x6ed9eba1;

[CVE-2023-40093_1.diff] fx_crypt_sha.cpp #7
- uint32_t temp1; - uint32_t temp2; - uint32_t A = ctx->state[0]; - uint32_t B = ctx->state[1]; - uint32_t C = ctx->state[2]; - uint32_t D = ctx->state[3]; - uint32_t E = ctx->state[4]; - uint32_t F = ctx->state[5]; - uint32_t G = ctx->state[6]; - uint32_t H = ctx->state[7]; + uint32_t A = static_cast<uint32_t>(ctx->state[0]); + uint32_t B = static_cast<uint32_t>(ctx->state[1]); + uint32_t C = static_cast<uint32_t>(ctx->state[2]); + uint32_t D = static_cast<uint32_t>(ctx->state[3]); + uint32_t E = static_cast<uint32_t>(ctx->state[4]); + uint32_t F = static_cast<uint32_t>(ctx->state[5]); + uint32_t G = static_cast<uint32_t>(ctx->state[6]); + uint32_t H = static_cast<uint32_t>(ctx->state[7]);
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_sha.cpp
154
155
156
157
158
159
160
161
162
163
SHA_GET_UINT32(W[7], data, 28); SHA_GET_UINT32(W[8], data, 32); SHA_GET_UINT32(W[9], data, 36); SHA_GET_UINT32(W[10], data, 40); SHA_GET_UINT32(W[11], data, 44); SHA_GET_UINT32(W[12], data, 48); SHA_GET_UINT32(W[13], data, 52); SHA_GET_UINT32(W[14], data, 56); SHA_GET_UINT32(W[15], data, 60);
+ show +
164
165
166
167
168
169
170
171
172
173
uint32_t temp1; uint32_t temp2; uint32_t A = ctx->state[0]; uint32_t B = ctx->state[1]; uint32_t C = ctx->state[2]; uint32_t D = ctx->state[3]; uint32_t E = ctx->state[4]; uint32_t F = ctx->state[5]; uint32_t G = ctx->state[6]; uint32_t H = ctx->state[7];
+ show +
174
175
176
177
178
179
180
181
182
183
PS(A, B, C, D, E, F, G, H, W[0], 0x428A2F98); PS(H, A, B, C, D, E, F, G, W[1], 0x71374491); PS(G, H, A, B, C, D, E, F, W[2], 0xB5C0FBCF); PS(F, G, H, A, B, C, D, E, W[3], 0xE9B5DBA5); PS(E, F, G, H, A, B, C, D, W[4], 0x3956C25B); PS(D, E, F, G, H, A, B, C, W[5], 0x59F111F1); PS(C, D, E, F, G, H, A, B, W[6], 0x923F82A4); PS(B, C, D, E, F, G, H, A, W[7], 0xAB1C5ED5); PS(A, B, C, D, E, F, G, H, W[8], 0xD807AA98); PS(H, A, B, C, D, E, F, G, W[9], 0x12835B01);

[CVE-2023-40093_1.diff] fx_crypt_sha.cpp #9
- A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - E = ctx->state[4]; - F = ctx->state[5]; - G = ctx->state[6]; - H = ctx->state[7]; + uint64_t A = ctx->state[0]; + uint64_t B = ctx->state[1]; + uint64_t C = ctx->state[2]; + uint64_t D = ctx->state[3]; + uint64_t E = ctx->state[4]; + uint64_t F = ctx->state[5]; + uint64_t G = ctx->state[6]; + uint64_t H = ctx->state[7];
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_sha.cpp
302
303
304
305
306
307
308
309
310
311
SHA_GET_UINT64(W[6], data, 48); SHA_GET_UINT64(W[7], data, 56); SHA_GET_UINT64(W[8], data, 64); SHA_GET_UINT64(W[9], data, 72); SHA_GET_UINT64(W[10], data, 80); SHA_GET_UINT64(W[11], data, 88); SHA_GET_UINT64(W[12], data, 96); SHA_GET_UINT64(W[13], data, 104); SHA_GET_UINT64(W[14], data, 112); SHA_GET_UINT64(W[15], data, 120);
+ show +
312
313
314
315
316
317
318
319
A = ctx->state[0]; B = ctx->state[1]; C = ctx->state[2]; D = ctx->state[3]; E = ctx->state[4]; F = ctx->state[5]; G = ctx->state[6]; H = ctx->state[7];
+ show +
320
321
322
323
324
325
326
327
328
329
for (int i = 0; i < 10; ++i) { uint64_t temp[8]; if (i < 2) { temp[0] = W[i * 8]; temp[1] = W[i * 8 + 1]; temp[2] = W[i * 8 + 2]; temp[3] = W[i * 8 + 3]; temp[4] = W[i * 8 + 4]; temp[5] = W[i * 8 + 5]; temp[6] = W[i * 8 + 6];

[CVE-2023-40093_1.diff] fx_crypt_aes.cpp #2
+#include <string.h> + +#include "core/fxcrt/fx_system.h" +#include "third_party/base/check.h" +#include "third_party/base/check_op.h" + -#define GET_32BIT_MSB_FIRST(cp) \ - (((unsigned long)(unsigned char)(cp)[3]) | \ - ((unsigned long)(unsigned char)(cp)[2] << 8) | \ - ((unsigned long)(unsigned char)(cp)[1] << 16) | \ - ((unsigned long)(unsigned char)(cp)[0] << 24))
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_aes.cpp
1
2
3
4
5
6
7
8
9
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "core/fdrm/fx_crypt.h" #define mulby2(x) (((x & 0x7F) << 1) ^ (x & 0x80 ? 0x1B : 0))
+ show +
10
11
12
13
14
#define GET_32BIT_MSB_FIRST(cp) \ (((unsigned long)(unsigned char)(cp)[3]) | \ ((unsigned long)(unsigned char)(cp)[2] << 8) | \ ((unsigned long)(unsigned char)(cp)[1] << 16) | \ ((unsigned long)(unsigned char)(cp)[0] << 24))
+ show +
15
16
17
18
19
20
21
22
23
24
#define PUT_32BIT_MSB_FIRST(cp, value) \ do { \ (cp)[3] = (value); \ (cp)[2] = (value) >> 8; \ (cp)[1] = (value) >> 16; \ (cp)[0] = (value) >> 24; \ } while (0) namespace {

[CVE-2023-40093_1.diff] fx_crypt_aes.cpp #8
- int a, b, c, d; - a = (temp >> 24) & 0xFF; - b = (temp >> 16) & 0xFF; - c = (temp >> 8) & 0xFF; - d = (temp >> 0) & 0xFF; + int a = (temp >> 24) & 0xFF; + int b = (temp >> 16) & 0xFF; + int c = (temp >> 8) & 0xFF; + int d = (temp >> 0) & 0xFF;
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_aes.cpp
531
532
533
534
535
536
537
538
539
540
a = (temp >> 16) & 0xFF; b = (temp >> 8) & 0xFF; c = (temp >> 0) & 0xFF; d = (temp >> 24) & 0xFF; temp = Sbox[a] ^ rconst; temp = (temp << 8) | Sbox[b]; temp = (temp << 8) | Sbox[c]; temp = (temp << 8) | Sbox[d]; rconst = mulby2(rconst); } else if (i % Nk == 4 && Nk > 6) {
+ show +
541
542
543
544
545
int a, b, c, d; a = (temp >> 24) & 0xFF; b = (temp >> 16) & 0xFF; c = (temp >> 8) & 0xFF; d = (temp >> 0) & 0xFF;
+ show +
546
547
548
549
550
551
552
553
554
555
temp = Sbox[a]; temp = (temp << 8) | Sbox[b]; temp = (temp << 8) | Sbox[c]; temp = (temp << 8) | Sbox[d]; } ctx->keysched[i] = ctx->keysched[i - Nk] ^ temp; } } for (int i = 0; i <= ctx->Nr; i++) { for (int j = 0; j < ctx->Nb; j++) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fdrm/fx_crypt_aes.cpp
549
550
551
552
553
554
555
556
557
558
temp = (temp << 8) | Sbox[d]; } ctx->keysched[i] = ctx->keysched[i - Nk] ^ temp; } } for (int i = 0; i <= ctx->Nr; i++) { for (int j = 0; j < ctx->Nb; j++) { unsigned int temp; temp = ctx->keysched[(ctx->Nr - i) * ctx->Nb + j]; if (i != 0 && i != ctx->Nr) {
+ show +
559
560
561
562
563
int a, b, c, d; a = (temp >> 24) & 0xFF; b = (temp >> 16) & 0xFF; c = (temp >> 8) & 0xFF; d = (temp >> 0) & 0xFF;
+ show +
564
565
566
567
568
569
570
571
572
573
temp = D0[Sbox[a]]; temp ^= D1[Sbox[b]]; temp ^= D2[Sbox[c]]; temp ^= D3[Sbox[d]]; } ctx->invkeysched[i * ctx->Nb + j] = temp; } } }

[CVE-2023-40093_1.diff] fx_codec_def.h #2
-enum FXCODEC_STATUS { - FXCODEC_STATUS_ERROR = -1, - FXCODEC_STATUS_FRAME_READY, - FXCODEC_STATUS_FRAME_TOBECONTINUE, - FXCODEC_STATUS_DECODE_READY, - FXCODEC_STATUS_DECODE_TOBECONTINUE, - FXCODEC_STATUS_DECODE_FINISH, -#ifdef PDF_ENABLE_XFA - FXCODEC_STATUS_ERR_MEMORY, -#endif // PDF_ENABLE_XFA - FXCODEC_STATUS_ERR_READ, - FXCODEC_STATUS_ERR_FLUSH, - FXCODEC_STATUS_ERR_FORMAT, - FXCODEC_STATUS_ERR_PARAMS +enum class FXCODEC_STATUS { + kError = -1, + kFrameReady, + kFrameToBeContinued, + kDecodeReady, + kDecodeToBeContinued, + kDecodeFinished,
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/fx_codec_def.h
1
2
3
4
5
6
7
8
9
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef CORE_FXCODEC_FX_CODEC_DEF_H_ #define CORE_FXCODEC_FX_CODEC_DEF_H_
+ show +
10
11
12
13
14
15
16
17
18
19
20
21
22
23
enum FXCODEC_STATUS { FXCODEC_STATUS_ERROR = -1, FXCODEC_STATUS_FRAME_READY, FXCODEC_STATUS_FRAME_TOBECONTINUE, FXCODEC_STATUS_DECODE_READY, FXCODEC_STATUS_DECODE_TOBECONTINUE, FXCODEC_STATUS_DECODE_FINISH, #ifdef PDF_ENABLE_XFA FXCODEC_STATUS_ERR_MEMORY, #endif // PDF_ENABLE_XFA FXCODEC_STATUS_ERR_READ, FXCODEC_STATUS_ERR_FLUSH, FXCODEC_STATUS_ERR_FORMAT, FXCODEC_STATUS_ERR_PARAMS
+ show +
24
25
26
27
28
29
30
31
32
33
}; #ifdef PDF_ENABLE_XFA enum FXCODEC_IMAGE_TYPE { FXCODEC_IMAGE_UNKNOWN = 0, FXCODEC_IMAGE_JPG, #ifdef PDF_ENABLE_XFA_BMP FXCODEC_IMAGE_BMP, #endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_PNG

[CVE-2023-40093_1.diff] basicmodule.cpp #10
-bool BasicModule::RunLengthEncode( - pdfium::span<const uint8_t> src_span, - std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, - uint32_t* dest_size) { - // Check inputs - if (src_span.empty() || !dest_buf || !dest_size) - return false; +DataVector<uint8_t> BasicModule::RunLengthEncode( + pdfium::span<const uint8_t> src_span) { + if (src_span.empty()) + return {}; - // Edge case - if (src_span.size() == 1) { - *dest_size = 3; - dest_buf->reset(FX_Alloc(uint8_t, *dest_size)); - auto dest_buf_span = pdfium::make_span(dest_buf->get(), *dest_size); - dest_buf_span[0] = 0; - dest_buf_span[1] = src_span[0]; - dest_buf_span[2] = 128; - return true; - } + // Handle edge case. + if (src_span.size() == 1) + return {0, src_span[0], 128};
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/basic/basicmodule.cpp
205
206
207
208
209
210
211
212
213
214
int nComps, int bpc) { auto pDecoder = pdfium::MakeUnique<RLScanlineDecoder>(); if (!pDecoder->Create(src_buf, width, height, nComps, bpc)) return nullptr; return std::move(pDecoder); } // static
+ show +
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
bool BasicModule::RunLengthEncode( pdfium::span<const uint8_t> src_span, std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size) { // Check inputs if (src_span.empty() || !dest_buf || !dest_size) return false; // Edge case if (src_span.size() == 1) { *dest_size = 3; dest_buf->reset(FX_Alloc(uint8_t, *dest_size)); auto dest_buf_span = pdfium::make_span(dest_buf->get(), *dest_size); dest_buf_span[0] = 0; dest_buf_span[1] = src_span[0]; dest_buf_span[2] = 128; return true;
+ show +
232
233
234
235
236
237
238
239
240
241
} // Worst case: 1 nonmatch, 2 match, 1 nonmatch, 2 match, etc. This becomes // 4 output chars for every 3 input, plus up to 4 more for the 1-2 chars // rounded off plus the terminating character. FX_SAFE_SIZE_T estimated_size = src_span.size(); estimated_size += 2; estimated_size /= 3; estimated_size *= 4; estimated_size += 1;

[CVE-2023-40093_1.diff] basicmodule.h #3
- static bool RunLengthEncode(pdfium::span<const uint8_t> src_span, - std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, - uint32_t* dest_size); + static DataVector<uint8_t> RunLengthEncode( + pdfium::span<const uint8_t> src_span); - static bool A85Encode(pdfium::span<const uint8_t> src_span, - std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, - uint32_t* dest_size); + static DataVector<uint8_t> A85Encode(pdfium::span<const uint8_t> src_span);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/basic/basicmodule.h
19
20
21
22
23
24
25
26
27
28
class BasicModule { public: static std::unique_ptr<ScanlineDecoder> CreateRunLengthDecoder( pdfium::span<const uint8_t> src_buf, int width, int height, int nComps, int bpc);
+ show +
29
30
31
32
33
34
35
static bool RunLengthEncode(pdfium::span<const uint8_t> src_span, std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size); static bool A85Encode(pdfium::span<const uint8_t> src_span, std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size);
+ show +
36
37
38
39
40
41
42
43
44
45
BasicModule() = delete; BasicModule(const BasicModule&) = delete; BasicModule& operator=(const BasicModule&) = delete; }; } // namespace fxcodec using BasicModule = fxcodec::BasicModule;

[CVE-2023-40093_1.diff] flatemodule.h #3
- static bool Encode(const uint8_t* src_buf, - uint32_t src_size, - std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, - uint32_t* dest_size); + static DataVector<uint8_t> Encode(pdfium::span<const uint8_t> src_span);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/flate/flatemodule.h
35
36
37
38
39
40
41
42
43
44
pdfium::span<const uint8_t> src_span, bool bEarlyChange, int predictor, int Colors, int BitsPerComponent, int Columns, uint32_t estimated_size, std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size);
+ show +
45
46
47
48
static bool Encode(const uint8_t* src_buf, uint32_t src_size, std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size);
+ show +
49
50
51
52
53
54
55
56
57
58
FlateModule() = delete; FlateModule(const FlateModule&) = delete; FlateModule& operator=(const FlateModule&) = delete; }; } // namespace fxcodec using FlateModule = fxcodec::FlateModule;

[CVE-2023-40093_1.diff] cfx_gifcontext.cpp #2
+#include <stdint.h> + +#include <iterator> -#include "core/fxcodec/gif/cfx_gif.h" -#include "core/fxcodec/gif/gifmodule.h" -#include "third_party/base/ptr_util.h" -#include "third_party/base/stl_util.h" +#include "core/fxcrt/data_vector.h" +#include "core/fxcrt/fx_system.h" +#include "core/fxcrt/stl_util.h"
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/gif/cfx_gifcontext.cpp
3
4
5
6
7
8
9
10
11
12
// found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "core/fxcodec/gif/cfx_gifcontext.h" #include <algorithm> #include <utility> #include "core/fxcodec/cfx_codec_memory.h"
+ show +
13
14
15
16
#include "core/fxcodec/gif/cfx_gif.h" #include "core/fxcodec/gif/gifmodule.h" #include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h"
+ show +
17
18
19
20
21
22
23
24
25
26
namespace fxcodec { namespace { constexpr int32_t kGifInterlaceStep[4] = {8, 8, 4, 2}; } // namespace CFX_GifContext::CFX_GifContext(GifModule* gif_module,

[CVE-2023-40093_1.diff] faxmodule.h #3
-#if defined(OS_WIN) - static void FaxEncode(const uint8_t* src_buf, - int width, - int height, - int pitch, - std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, - uint32_t* dest_size); -#endif // defined(OS_WIN) +#if BUILDFLAG(IS_WIN) + // `src` must have a BPP value of 1. + static DataVector<uint8_t> FaxEncode(RetainPtr<CFX_DIBBase> src); +#endif // BUILDFLAG(IS_WIN)
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/fax/faxmodule.h
33
34
35
36
37
38
39
40
41
42
// Return the ending bit position. static int FaxG4Decode(const uint8_t* src_buf, uint32_t src_size, int starting_bitpos, int width, int height, int pitch, uint8_t* dest_buf);
+ show +
43
44
45
46
47
48
49
50
#if defined(OS_WIN) static void FaxEncode(const uint8_t* src_buf, int width, int height, int pitch, std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size); #endif // defined(OS_WIN)
+ show +
51
52
53
54
55
56
57
58
59
60
FaxModule() = delete; FaxModule(const FaxModule&) = delete; FaxModule& operator=(const FaxModule&) = delete; }; } // namespace fxcodec using FaxModule = fxcodec::FaxModule;

[CVE-2023-40093_1.diff] JBig2_Context.cpp #28
- } else { - pSegment->m_PatternDict = pPDD->DecodeMMR(m_pStream.get()); - if (!pSegment->m_PatternDict) - return JBig2_Result::kFailure; - m_pStream->alignByte();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_Context.cpp
832
833
834
835
836
837
838
839
840
841
FX_Alloc(JBig2ArithCtx, size)); auto pArithDecoder = pdfium::MakeUnique<CJBig2_ArithDecoder>(m_pStream.get()); pSegment->m_PatternDict = pPDD->DecodeArith(pArithDecoder.get(), gbContext.get(), pPause); if (!pSegment->m_PatternDict) return JBig2_Result::kFailure; m_pStream->alignByte(); m_pStream->offset(2);
+ show +
842
843
844
845
846
} else { pSegment->m_PatternDict = pPDD->DecodeMMR(m_pStream.get()); if (!pSegment->m_PatternDict) return JBig2_Result::kFailure; m_pStream->alignByte();
+ show +
847
848
849
850
851
852
853
854
855
856
} return JBig2_Result::kSuccess; } JBig2_Result CJBig2_Context::ParseHalftoneRegion(CJBig2_Segment* pSegment, PauseIndicatorIface* pPause) { uint8_t cFlags; JBig2RegionInfo ri; auto pHRD = pdfium::MakeUnique<CJBig2_HTRDProc>(); if (ParseRegionInfo(&ri) != JBig2_Result::kSuccess ||

[CVE-2023-40093_1.diff] JBig2_TrdProc.cpp #8
- if ((pHuffmanDecoder->DecodeAValue(SBHUFFRDW.Get(), &RDWI) != 0) || - (pHuffmanDecoder->DecodeAValue(SBHUFFRDH.Get(), &RDHI) != 0) || - (pHuffmanDecoder->DecodeAValue(SBHUFFRDX.Get(), &RDXI) != 0) || - (pHuffmanDecoder->DecodeAValue(SBHUFFRDY.Get(), &RDYI) != 0) || - (pHuffmanDecoder->DecodeAValue(SBHUFFRSIZE.Get(), &HUFFRSIZE) != - 0)) { + if ((pHuffmanDecoder->DecodeAValue(SBHUFFRDW, &RDWI) != 0) || + (pHuffmanDecoder->DecodeAValue(SBHUFFRDH, &RDHI) != 0) || + (pHuffmanDecoder->DecodeAValue(SBHUFFRDX, &RDXI) != 0) || + (pHuffmanDecoder->DecodeAValue(SBHUFFRDY, &RDYI) != 0) || + (pHuffmanDecoder->DecodeAValue(SBHUFFRSIZE, &HUFFRSIZE) != 0)) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_TrdProc.cpp
140
141
142
143
144
145
146
147
148
149
MaybeOwned<CJBig2_Image> IBI; if (RI == 0) { IBI = SBSYMS[IDI]; } else { int32_t RDWI; int32_t RDHI; int32_t RDXI; int32_t RDYI; int32_t HUFFRSIZE;
+ show +
150
151
152
153
154
155
if ((pHuffmanDecoder->DecodeAValue(SBHUFFRDW.Get(), &RDWI) != 0) || (pHuffmanDecoder->DecodeAValue(SBHUFFRDH.Get(), &RDHI) != 0) || (pHuffmanDecoder->DecodeAValue(SBHUFFRDX.Get(), &RDXI) != 0) || (pHuffmanDecoder->DecodeAValue(SBHUFFRDY.Get(), &RDYI) != 0) || (pHuffmanDecoder->DecodeAValue(SBHUFFRSIZE.Get(), &HUFFRSIZE) != 0)) {
+ show +
156
157
158
159
160
161
162
163
164
165
return nullptr; } pStream->alignByte(); uint32_t nTmp = pStream->getOffset(); CJBig2_Image* IBOI = SBSYMS[IDI]; if (!IBOI) return nullptr; Optional<uint32_t> WOI = CheckTRDDimension(IBOI->width(), RDWI); Optional<uint32_t> HOI = CheckTRDDimension(IBOI->height(), RDHI);

[CVE-2023-40093_1.diff] JBig2_TrdProc.cpp #12
- pIAFS = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIADS = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIAIT = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIARI = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIARDW = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIARDH = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIARDX = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIARDY = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); - pIAID = pdfium::MakeUnique<CJBig2_ArithIaidDecoder>(SBSYMCODELEN); + pIAFS = std::make_unique<CJBig2_ArithIntDecoder>(); + pIADS = std::make_unique<CJBig2_ArithIntDecoder>(); + pIAIT = std::make_unique<CJBig2_ArithIntDecoder>(); + pIARI = std::make_unique<CJBig2_ArithIntDecoder>(); + pIARDW = std::make_unique<CJBig2_ArithIntDecoder>(); + pIARDH = std::make_unique<CJBig2_ArithIntDecoder>(); + pIARDX = std::make_unique<CJBig2_ArithIntDecoder>(); + pIARDY = std::make_unique<CJBig2_ArithIntDecoder>(); + pIAID = std::make_unique<CJBig2_ArithIaidDecoder>(SBSYMCODELEN);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_TrdProc.cpp
252
253
254
255
256
257
258
259
260
261
pIAFS = pIDS->IAFS; pIADS = pIDS->IADS; pIAIT = pIDS->IAIT; pIARI = pIDS->IARI; pIARDW = pIDS->IARDW; pIARDH = pIDS->IARDH; pIARDX = pIDS->IARDX; pIARDY = pIDS->IARDY; pIAID = pIDS->IAID; } else {
+ show +
262
263
264
265
266
267
268
269
270
pIAFS = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIADS = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIAIT = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIARI = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIARDW = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIARDH = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIARDX = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIARDY = pdfium::MakeUnique<CJBig2_ArithIntDecoder>(); pIAID = pdfium::MakeUnique<CJBig2_ArithIaidDecoder>(SBSYMCODELEN);
+ show +
271
272
273
274
275
276
277
278
279
280
} SBREG->Fill(SBDEFPIXEL); FX_SAFE_INT32 STRIPT = INITIAL_STRIPT; STRIPT *= SBSTRIPS; STRIPT = -STRIPT; FX_SAFE_INT32 FIRSTS = 0; uint32_t NINSTANCES = 0; while (NINSTANCES < SBNUMINSTANCES) {

[CVE-2023-40093_1.diff] JBig2_GrdProc.cpp #43
- m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; + m_ProgressiveStatus = FXCODEC_STATUS::kDecodeToBeContinued; + return FXCODEC_STATUS::kDecodeToBeContinued; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; + m_ProgressiveStatus = FXCODEC_STATUS::kDecodeFinished; + return FXCODEC_STATUS::kDecodeFinished;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_GrdProc.cpp
569
570
571
572
573
574
575
576
577
578
cVal1 |= bVal << (7 - k); CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | ((line2 >> (7 - k)) & 0x0010)); } m_pLine[nLineBytes] = cVal1; } } m_pLine += nStride; if (pState->pPause && pState->pPause->NeedToPauseNow()) { m_loopIndex++;
+ show +
579
580
581
582
583
584
m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; return FXCODEC_STATUS_DECODE_TOBECONTINUE; } } m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; return FXCODEC_STATUS_DECODE_FINISH;
+ show +
585
586
587
588
589
590
591
592
593
594
} FXCODEC_STATUS CJBig2_GRDProc::ProgressiveDecodeArithTemplate0Unopt( ProgressiveArithDecodeState* pState) { CJBig2_Image* pImage = pState->pImage->get(); JBig2ArithCtx* gbContext = pState->gbContext.Get(); CJBig2_ArithDecoder* pArithDecoder = pState->pArithDecoder.Get(); for (; m_loopIndex < GBH; m_loopIndex++) { if (TPGDON) { if (pArithDecoder->IsComplete())
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_GrdProc.cpp
627
628
629
630
631
632
633
634
635
636
} line1 = ((line1 << 1) | pImage->GetPixel(w + 2, m_loopIndex - 2)) & 0x07; line2 = ((line2 << 1) | pImage->GetPixel(w + 3, m_loopIndex - 1)) & 0x1f; line3 = ((line3 << 1) | bVal) & 0x0f; } } if (pState->pPause && pState->pPause->NeedToPauseNow()) { m_loopIndex++;
+ show +
637
638
639
640
641
642
m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; return FXCODEC_STATUS_DECODE_TOBECONTINUE; } } m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; return FXCODEC_STATUS_DECODE_FINISH;
+ show +
643
644
645
646
647
648
649
650
651
652
} FXCODEC_STATUS CJBig2_GRDProc::ProgressiveDecodeArithTemplate1Opt3( ProgressiveArithDecodeState* pState) { CJBig2_Image* pImage = pState->pImage->get(); JBig2ArithCtx* gbContext = pState->gbContext.Get(); CJBig2_ArithDecoder* pArithDecoder = pState->pArithDecoder.Get(); if (!m_pLine) m_pLine = pImage->data(); int32_t nStride = pImage->stride();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_GrdProc.cpp
728
729
730
731
732
733
734
735
736
737
cVal1 |= bVal << (7 - k); CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | ((line2 >> (8 - k)) & 0x0008); } m_pLine[nLineBytes] = cVal1; } } m_pLine += nStride; if (pState->pPause && pState->pPause->NeedToPauseNow()) { m_loopIndex++;
+ show +
738
739
740
741
742
743
m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; return FXCODEC_STATUS_DECODE_TOBECONTINUE; } } m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; return FXCODEC_STATUS_DECODE_FINISH;
+ show +
744
745
746
747
748
749
750
751
752
753
} FXCODEC_STATUS CJBig2_GRDProc::ProgressiveDecodeArithTemplate1Unopt( ProgressiveArithDecodeState* pState) { CJBig2_Image* pImage = pState->pImage->get(); JBig2ArithCtx* gbContext = pState->gbContext.Get(); CJBig2_ArithDecoder* pArithDecoder = pState->pArithDecoder.Get(); for (uint32_t h = 0; h < GBH; h++) { if (TPGDON) { if (pArithDecoder->IsComplete())
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_GrdProc.cpp
782
783
784
785
786
787
788
789
790
791
if (bVal) { pImage->SetPixel(w, h, bVal); } line1 = ((line1 << 1) | pImage->GetPixel(w + 3, h - 2)) & 0x0f; line2 = ((line2 << 1) | pImage->GetPixel(w + 3, h - 1)) & 0x1f; line3 = ((line3 << 1) | bVal) & 0x07; } } if (pState->pPause && pState->pPause->NeedToPauseNow()) { m_loopIndex++;
+ show +
792
793
794
795
796
797
m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; return FXCODEC_STATUS_DECODE_TOBECONTINUE; } } m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; return FXCODEC_STATUS_DECODE_FINISH;
+ show +
798
799
800
801
802
803
804
805
806
807
} FXCODEC_STATUS CJBig2_GRDProc::ProgressiveDecodeArithTemplate2Opt3( ProgressiveArithDecodeState* pState) { CJBig2_Image* pImage = pState->pImage->get(); JBig2ArithCtx* gbContext = pState->gbContext.Get(); CJBig2_ArithDecoder* pArithDecoder = pState->pArithDecoder.Get(); if (!m_pLine) m_pLine = pImage->data(); int32_t nStride = pImage->stride();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_GrdProc.cpp
884
885
886
887
888
889
890
891
892
893
CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | (((line2 >> (10 - k))) & 0x0004); } m_pLine[nLineBytes] = cVal1; } } m_pLine += nStride; if (pState->pPause && m_loopIndex % 50 == 0 && pState->pPause->NeedToPauseNow()) { m_loopIndex++;
+ show +
894
895
896
897
898
899
m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; return FXCODEC_STATUS_DECODE_TOBECONTINUE; } } m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; return FXCODEC_STATUS_DECODE_FINISH;
+ show +
900
901
902
903
904
905
906
907
908
909
} FXCODEC_STATUS CJBig2_GRDProc::ProgressiveDecodeArithTemplate2Unopt( ProgressiveArithDecodeState* pState) { CJBig2_Image* pImage = pState->pImage->get(); JBig2ArithCtx* gbContext = pState->gbContext.Get(); CJBig2_ArithDecoder* pArithDecoder = pState->pArithDecoder.Get(); for (; m_loopIndex < GBH; m_loopIndex++) { if (TPGDON) { if (pArithDecoder->IsComplete())
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_GrdProc.cpp
938
939
940
941
942
943
944
945
946
947
} line1 = ((line1 << 1) | pImage->GetPixel(w + 2, m_loopIndex - 2)) & 0x07; line2 = ((line2 << 1) | pImage->GetPixel(w + 2, m_loopIndex - 1)) & 0x0f; line3 = ((line3 << 1) | bVal) & 0x03; } } if (pState->pPause && pState->pPause->NeedToPauseNow()) { m_loopIndex++;
+ show +
948
949
950
951
952
953
m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; return FXCODEC_STATUS_DECODE_TOBECONTINUE; } } m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; return FXCODEC_STATUS_DECODE_FINISH;
+ show +
954
955
956
957
958
959
960
961
962
963
} FXCODEC_STATUS CJBig2_GRDProc::ProgressiveDecodeArithTemplate3Opt3( ProgressiveArithDecodeState* pState) { CJBig2_Image* pImage = pState->pImage->get(); JBig2ArithCtx* gbContext = pState->gbContext.Get(); CJBig2_ArithDecoder* pArithDecoder = pState->pArithDecoder.Get(); if (!m_pLine) m_pLine = pImage->data(); int32_t nStride = pImage->stride();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcodec/jbig2/JBig2_GrdProc.cpp
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
int bVal = pArithDecoder->Decode(&gbContext[CONTEXT]); cVal1 |= bVal << (7 - k); CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; } m_pLine[nLineBytes] = cVal1; } } m_pLine += nStride; if (pState->pPause && pState->pPause->NeedToPauseNow()) { m_loopIndex++;
+ show +
1035
1036
1037
1038
1039
1040
m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; return FXCODEC_STATUS_DECODE_TOBECONTINUE; } } m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; return FXCODEC_STATUS_DECODE_FINISH;
+ show +
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
} FXCODEC_STATUS CJBig2_GRDProc::ProgressiveDecodeArithTemplate3Unopt( ProgressiveArithDecodeState* pState) { CJBig2_Image* pImage = pState->pImage->get(); JBig2ArithCtx* gbContext = pState->gbContext.Get(); CJBig2_ArithDecoder* pArithDecoder = pState->pArithDecoder.Get(); for (; m_loopIndex < GBH; m_loopIndex++) { if (TPGDON) { if (pArithDecoder->IsComplete())

[CVE-2023-40093_1.diff] cpdf_rendershading.cpp #18
-struct Coon_Color { - Coon_Color() { memset(comp, 0, sizeof(int) * 3); } +struct CoonColor { + CoonColor() = default; - bool BiInterpol(Coon_Color colors[4], - int x, - int y, - int x_scale, - int y_scale) { + bool BiInterpol(CoonColor colors[4], int x, int y, int x_scale, int y_scale) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_rendershading.cpp
625
626
627
628
629
630
631
632
633
634
int x, int y, int x_scale, int y_scale, bool* overflow) { int x1 = Interpolate(c0, c3, x, x_scale, overflow); int x2 = Interpolate(c1, c2, x, x_scale, overflow); return Interpolate(x1, x2, y, y_scale, overflow); }
+ show +
635
636
637
638
639
640
641
642
643
struct Coon_Color { Coon_Color() { memset(comp, 0, sizeof(int) * 3); } // Returns true if successful, false if overflow detected. bool BiInterpol(Coon_Color colors[4], int x, int y, int x_scale, int y_scale) {
+ show +
644
645
646
647
648
649
650
651
652
653
bool overflow = false; for (int i = 0; i < 3; i++) { comp[i] = BiInterpolImpl(colors[0].comp[i], colors[1].comp[i], colors[2].comp[i], colors[3].comp[i], x, y, x_scale, y_scale, &overflow); } return !overflow; } int Distance(Coon_Color& o) {

[CVE-2023-40093_1.diff] cpdf_rendershading.cpp #21
- Coon_Bezier m1, m2; - m1.BezierInterpol(D1, D2, C1, C2); - m2.BezierInterpol(C1, C2, D1, D2); - Coon_Bezier m1f = m1.first_half(); - Coon_Bezier m1s = m1.second_half(); - Coon_Bezier m2f = m2.first_half(); - Coon_Bezier m2s = m2.second_half(); + CoonBezier m1; + CoonBezier m2; + m1.InitFromBezierInterpolation(D1, D2, C1, C2); + m2.InitFromBezierInterpolation(C1, C2, D1, D2); + CoonBezier m1f = m1.first_half(); + CoonBezier m1s = m1.second_half(); + CoonBezier m2f = m2.first_half(); + CoonBezier m2s = m2.second_half();
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_rendershading.cpp
728
729
730
731
732
733
734
735
736
737
d_right < COONCOLOR_THRESHOLD) { Coon_Bezier m2; m2.BezierInterpol(C1, C2, D1, D2); x_scale *= 2; left *= 2; Draw(x_scale, y_scale, left, bottom, C1.first_half(), C2.first_half(), D1, m2); Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(), C2.second_half(), m2, D2); } else {
+ show +
738
739
740
741
742
743
744
Coon_Bezier m1, m2; m1.BezierInterpol(D1, D2, C1, C2); m2.BezierInterpol(C1, C2, D1, D2); Coon_Bezier m1f = m1.first_half(); Coon_Bezier m1s = m1.second_half(); Coon_Bezier m2f = m2.first_half(); Coon_Bezier m2s = m2.second_half();
+ show +
745
746
747
748
749
750
751
752
753
754
x_scale *= 2; y_scale *= 2; left *= 2; bottom *= 2; Draw(x_scale, y_scale, left, bottom, C1.first_half(), m1f, D1.first_half(), m2f); Draw(x_scale, y_scale, left, bottom + 1, m1f, C2.first_half(), D1.second_half(), m2s); Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(), m1s, m2f, D2.first_half());

[CVE-2023-40093_1.diff] cpdf_rendershading.cpp #23
- memcpy(coords, tempCoords, sizeof(tempCoords)); - Coon_Color tempColors[2]; - tempColors[0] = patch.patch_colors[flag]; - tempColors[1] = patch.patch_colors[(flag + 1) % 4]; - memcpy(patch.patch_colors, tempColors, sizeof(Coon_Color) * 2); + fxcrt::spancpy(pdfium::make_span(coords), pdfium::make_span(tempCoords)); + CoonColor tempColors[2] = { + tempColors[0] = patch.patch_colors[flag], + tempColors[1] = patch.patch_colors[(flag + 1) % 4]}; + fxcrt::spancpy(pdfium::make_span(patch.patch_colors), + pdfium::make_span(tempColors));
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_rendershading.cpp
802
803
804
805
806
807
808
809
810
811
break; uint32_t flag = stream.ReadFlag(); int iStartPoint = 0, iStartColor = 0, i = 0; if (flag) { iStartPoint = 4; iStartColor = 2; CFX_PointF tempCoords[4]; for (i = 0; i < 4; i++) { tempCoords[i] = coords[(flag * 3 + i) % 12]; }
+ show +
812
813
814
815
816
memcpy(coords, tempCoords, sizeof(tempCoords)); Coon_Color tempColors[2]; tempColors[0] = patch.patch_colors[flag]; tempColors[1] = patch.patch_colors[(flag + 1) % 4]; memcpy(patch.patch_colors, tempColors, sizeof(Coon_Color) * 2);
+ show +
817
818
819
820
821
822
823
824
825
826
} for (i = iStartPoint; i < point_count; i++) { if (!stream.CanReadCoords()) break; coords[i] = mtObject2Bitmap.Transform(stream.ReadCoords()); } for (i = iStartColor; i < 4; i++) { if (!stream.CanReadColor()) break;

[CVE-2023-40093_1.diff] cpdf_docrenderdata_unittest.cpp #4
- CPDF_Array* domain_array = func_dict->SetNewFor<CPDF_Array>("Domain"); - domain_array->AddNew<CPDF_Number>(0); - domain_array->AddNew<CPDF_Number>(1); + auto domain_array = func_dict->SetNewFor<CPDF_Array>("Domain"); + domain_array->AppendNew<CPDF_Number>(0); + domain_array->AppendNew<CPDF_Number>(1); - CPDF_Array* c0_array = func_dict->SetNewFor<CPDF_Array>("C0"); - c0_array->AddNew<CPDF_Number>(0.1f); - c0_array->AddNew<CPDF_Number>(0.2f); - c0_array->AddNew<CPDF_Number>(0.8f); + auto c0_array = func_dict->SetNewFor<CPDF_Array>("C0"); + c0_array->AppendNew<CPDF_Number>(0.1f); + c0_array->AppendNew<CPDF_Number>(0.2f); + c0_array->AppendNew<CPDF_Number>(0.8f); - CPDF_Array* c1_array = func_dict->SetNewFor<CPDF_Array>("C1"); - c1_array->AddNew<CPDF_Number>(0.05f); - c1_array->AddNew<CPDF_Number>(0.01f); - c1_array->AddNew<CPDF_Number>(0.4f); + auto c1_array = func_dict->SetNewFor<CPDF_Array>("C1"); + c1_array->AppendNew<CPDF_Number>(0.05f); + c1_array->AppendNew<CPDF_Number>(0.01f); + c1_array->AppendNew<CPDF_Number>(0.4f);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_docrenderdata_unittest.cpp
93
94
95
96
97
98
99
100
101
102
memcpy(buf.get(), content, len); return pdfium::MakeRetain<CPDF_Stream>(std::move(buf), len, std::move(func_dict)); } RetainPtr<CPDF_Dictionary> CreateType2FunctionDict() { auto func_dict = pdfium::MakeRetain<CPDF_Dictionary>(); func_dict->SetNewFor<CPDF_Number>("FunctionType", 2); func_dict->SetNewFor<CPDF_Number>("N", 1);
+ show +
103
104
105
106
107
108
109
110
111
112
113
114
115
CPDF_Array* domain_array = func_dict->SetNewFor<CPDF_Array>("Domain"); domain_array->AddNew<CPDF_Number>(0); domain_array->AddNew<CPDF_Number>(1); CPDF_Array* c0_array = func_dict->SetNewFor<CPDF_Array>("C0"); c0_array->AddNew<CPDF_Number>(0.1f); c0_array->AddNew<CPDF_Number>(0.2f); c0_array->AddNew<CPDF_Number>(0.8f); CPDF_Array* c1_array = func_dict->SetNewFor<CPDF_Array>("C1"); c1_array->AddNew<CPDF_Number>(0.05f); c1_array->AddNew<CPDF_Number>(0.01f); c1_array->AddNew<CPDF_Number>(0.4f);
+ show +
116
117
118
119
120
121
122
123
124
125
return func_dict; } RetainPtr<CPDF_Stream> CreateType4FunctionStream() { auto func_dict = pdfium::MakeRetain<CPDF_Dictionary>(); func_dict->SetNewFor<CPDF_Number>("FunctionType", 4); CPDF_Array* domain_array = func_dict->SetNewFor<CPDF_Array>("Domain"); domain_array->AddNew<CPDF_Number>(0);

[CVE-2023-40093_1.diff] cfx_barcode.h #2
+#include <stdint.h> + -#include "core/fxcrt/fx_coordinates.h" -#include "core/fxcrt/fx_string.h" -#include "core/fxcrt/fx_system.h" -#include "core/fxge/fx_dib.h" +#include "core/fxcrt/widestring.h" +#include "core/fxge/dib/fx_dib.h"
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_textrenderer.h
2
3
4
5
6
7
8
9
10
11
// Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef CORE_FPDFAPI_RENDER_CPDF_TEXTRENDERER_H_ #define CORE_FPDFAPI_RENDER_CPDF_TEXTRENDERER_H_ #include <vector>
+ show +
12
13
14
15
#include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" #include "core/fxge/fx_dib.h"
+ show +
16
17
18
19
20
21
22
23
24
25
class CFX_RenderDevice; class CFX_GraphStateData; class CFX_PathData; class CPDF_RenderOptions; class CPDF_Font; class CPDF_TextRenderer { public: static void DrawTextString(CFX_RenderDevice* pDevice,
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/cfx_barcode.h
2
3
4
5
6
7
8
9
10
11
// Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef FXBARCODE_CFX_BARCODE_H_ #define FXBARCODE_CFX_BARCODE_H_ #include <memory>
+ show +
12
13
14
15
#include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" #include "core/fxge/fx_dib.h"
+ show +
16
17
18
19
20
21
22
23
24
25
#include "fxbarcode/BC_Library.h" class CBC_CodeBase; class CFX_Font; class CFX_RenderDevice; class CFX_Matrix; class CFX_Barcode { public: ~CFX_Barcode();

[CVE-2023-40093_1.diff] cpdf_renderstatus.cpp #32
- } else { - CFX_Matrix image_matrix = pType3Char->matrix() * matrix; - CPDF_ImageRenderer renderer; - if (renderer.Start(this, pType3Char->GetBitmap(), fill_argb, 255, - image_matrix, FXDIB_ResampleOptions(), false, - BlendMode::kNormal)) { - renderer.Continue(nullptr); - } - if (!renderer.GetResult()) - return false;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
top -= pBitmap->top(); if (!top.IsValid()) continue; m_pDevice->SetBitMask(pBitmap->GetBitmap(), left.ValueOrDie(), top.ValueOrDie(), fill_argb); } else { glyphs[iChar].m_pGlyph = pBitmap; glyphs[iChar].m_Origin = origin; }
+ show +
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
} else { CFX_Matrix image_matrix = pType3Char->matrix() * matrix; CPDF_ImageRenderer renderer; if (renderer.Start(this, pType3Char->GetBitmap(), fill_argb, 255, image_matrix, FXDIB_ResampleOptions(), false, BlendMode::kNormal)) { renderer.Continue(nullptr); } if (!renderer.GetResult()) return false;
+ show +
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
} } } if (glyphs.empty()) return true; FX_RECT rect = GetGlyphsBBox(glyphs, 0); auto pBitmap = pdfium::MakeRetain<CFX_DIBitmap>(); if (!pBitmap->Create(rect.Width(), rect.Height(), FXDIB_8bppMask))

[CVE-2023-40093_1.diff] cpdf_renderstatus.cpp #36
- CFX_Matrix matrix; - if (charpos.m_bGlyphAdjust) { - matrix = CFX_Matrix(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], - charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], - 0, 0); - } - matrix.Concat(CFX_Matrix(font_size, 0, 0, font_size, charpos.m_Origin.x, - charpos.m_Origin.y)); - path.set_stroke(bStroke); - path.set_filltype(bFill ? FXFILL_WINDING : 0); - path.path().Append(pPath, &matrix); - path.set_matrix(*pTextMatrix); - path.CalcBoundingBox(); + CFX_Matrix matrix = charpos.GetEffectiveMatrix(CFX_Matrix( + font_size, 0, 0, font_size, charpos.m_Origin.x, charpos.m_Origin.y)); + matrix.Concat(mtTextMatrix); + path.set_stroke(stroke); + path.set_filltype(fill ? CFX_FillRenderOptions::FillType::kWinding + : CFX_FillRenderOptions::FillType::kNoFill); + path.path().Append(*pPath, &matrix); + path.SetPathMatrix(CFX_Matrix());
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
: pFont->GetFontFallback(charpos.m_FallbackFontPosition); const CFX_PathData* pPath = font->LoadGlyphPath(charpos.m_GlyphIndex, charpos.m_FontCharWidth); if (!pPath) continue; CPDF_PathObject path; path.m_GraphState = textobj->m_GraphState; path.m_ColorState = textobj->m_ColorState;
+ show +
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
CFX_Matrix matrix; if (charpos.m_bGlyphAdjust) { matrix = CFX_Matrix(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); } matrix.Concat(CFX_Matrix(font_size, 0, 0, font_size, charpos.m_Origin.x, charpos.m_Origin.y)); path.set_stroke(bStroke); path.set_filltype(bFill ? FXFILL_WINDING : 0); path.path().Append(pPath, &matrix); path.set_matrix(*pTextMatrix); path.CalcBoundingBox();
+ show +
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
ProcessPath(&path, mtObj2Device); } } void CPDF_RenderStatus::DrawShadingPattern(CPDF_ShadingPattern* pattern, const CPDF_PageObject* pPageObj, const CFX_Matrix& mtObj2Device, bool bStroke) { if (!pattern->Load()) return;

[CVE-2023-40093_1.diff] cpdf_textrenderer.cpp #3
+CFX_TextRenderOptions GetTextRenderOptionsHelper( + const CPDF_Font* pFont, + const CPDF_RenderOptions& options) { + CFX_TextRenderOptions text_options; + + if (pFont->IsCIDFont()) + text_options.font_is_cid = true; + + if (options.GetOptions().bNoTextSmooth) + text_options.aliasing_type = CFX_TextRenderOptions::kAliasing; + else if (options.GetOptions().bClearType) + text_options.aliasing_type = CFX_TextRenderOptions::kLcd; + + if (options.GetOptions().bNoNativeText) + text_options.native_text = false; + + return text_options; +} + -bool CPDF_TextRenderer::DrawTextPath(CFX_RenderDevice* pDevice, - const std::vector<uint32_t>& charCodes, - const std::vector<float>& charPos, - CPDF_Font* pFont, - float font_size, - const CFX_Matrix& mtText2User, - const CFX_Matrix* pUser2Device, - const CFX_GraphStateData* pGraphState, - FX_ARGB fill_argb, - FX_ARGB stroke_argb, - CFX_PathData* pClippingPath, - int nFlag) { - const CPDF_CharPosList CharPosList(charCodes, charPos, pFont, font_size); - const std::vector<TextCharPos>& pos = CharPosList.Get(); +bool CPDF_TextRenderer::DrawTextPath( + CFX_RenderDevice* pDevice, + pdfium::span<const uint32_t> char_codes, + pdfium::span<const float> char_pos, + CPDF_Font* pFont, + float font_size, + const CFX_Matrix& mtText2User, + const CFX_Matrix* pUser2Device, + const CFX_GraphStateData* pGraphState, + FX_ARGB fill_argb, + FX_ARGB stroke_argb, + CFX_Path* pClippingPath, + const CFX_FillRenderOptions& fill_options) { + std::vector<TextCharPos> pos = + GetCharPosList(char_codes, char_pos, pFont, font_size);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/render/cpdf_textrenderer.cpp
19
20
21
22
23
24
25
26
27
28
namespace { CFX_Font* GetFont(CPDF_Font* pFont, int32_t position) { return position == -1 ? pFont->GetFont() : pFont->GetFontFallback(position); } } // namespace // static
+ show +
29
30
31
32
33
34
35
36
37
38
39
40
41
42
bool CPDF_TextRenderer::DrawTextPath(CFX_RenderDevice* pDevice, const std::vector<uint32_t>& charCodes, const std::vector<float>& charPos, CPDF_Font* pFont, float font_size, const CFX_Matrix& mtText2User, const CFX_Matrix* pUser2Device, const CFX_GraphStateData* pGraphState, FX_ARGB fill_argb, FX_ARGB stroke_argb, CFX_PathData* pClippingPath, int nFlag) { const CPDF_CharPosList CharPosList(charCodes, charPos, pFont, font_size); const std::vector<TextCharPos>& pos = CharPosList.Get();
+ show +
43
44
45
46
47
48
49
50
51
52
if (pos.empty()) return true; bool bDraw = true; int32_t fontPosition = pos[0].m_FallbackFontPosition; size_t startIndex = 0; for (size_t i = 0; i < pos.size(); ++i) { int32_t curFontPosition = pos[i].m_FallbackFontPosition; if (fontPosition == curFontPosition) continue;

[CVE-2023-40093_1.diff] cpdf_form.cpp #5
- if (!pParsedSet) { - if (!m_ParsedSet) - m_ParsedSet = pdfium::MakeUnique<std::set<const uint8_t*>>(); - pParsedSet = m_ParsedSet.get(); - } - StartParse(pdfium::MakeUnique<CPDF_ContentParser>( - this, pGraphicStates, pParentMatrix, pType3Char, pParsedSet)); + StartParse(std::make_unique<CPDF_ContentParser>( + GetStream(), this, pGraphicStates, pParentMatrix, pType3Char, + pParsedSet ? pParsedSet : &m_ParsedSet)); - - ASSERT(GetParseState() == ParseState::kParsing); + DCHECK_EQ(GetParseState(), ParseState::kParsing);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_form.cpp
64
65
66
67
68
69
70
71
72
73
} void CPDF_Form::ParseContentInternal(const CPDF_AllStates* pGraphicStates, const CFX_Matrix* pParentMatrix, CPDF_Type3Char* pType3Char, std::set<const uint8_t*>* pParsedSet) { if (GetParseState() == ParseState::kParsed) return; if (GetParseState() == ParseState::kNotParsed) {
+ show +
74
75
76
77
78
79
80
81
82
83
if (!pParsedSet) { if (!m_ParsedSet) m_ParsedSet = pdfium::MakeUnique<std::set<const uint8_t*>>(); pParsedSet = m_ParsedSet.get(); } StartParse(pdfium::MakeUnique<CPDF_ContentParser>( this, pGraphicStates, pParentMatrix, pType3Char, pParsedSet)); } ASSERT(GetParseState() == ParseState::kParsing);
+ show +
84
85
86
87
88
89
90
91
92
93
ContinueParse(nullptr); } bool CPDF_Form::HasPageObjects() const { return GetPageObjectCount() != 0; } CFX_FloatRect CPDF_Form::CalcBoundingBox() const { if (GetPageObjectCount() == 0) return CFX_FloatRect();

[CVE-2023-40093_1.diff] cpdf_colorspace.h #6
- UnownedPtr<CPDF_Document> const m_pDocument; - RetainPtr<const CPDF_Array> m_pArray; - const int m_Family; - uint32_t m_dwStdConversion = 0; + bool IsStdConversionEnabled() const { return m_dwStdConversion != 0; } + bool HasSameArray(const CPDF_Object* pObj) const { return m_pArray == pObj; } + friend class CPDF_CalGray_TranslateImageLine_Test; + friend class CPDF_CalRGB_TranslateImageLine_Test; + + static RetainPtr<CPDF_ColorSpace> AllocateColorSpace( + ByteStringView bsFamilyName); + + const Family m_Family; + uint32_t m_dwStdConversion = 0; + RetainPtr<const CPDF_Array> m_pArray;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_colorspace.h
121
122
123
124
125
126
127
128
129
130
// Returns the number of components, or 0 on failure. virtual uint32_t v_Load(CPDF_Document* pDoc, const CPDF_Array* pArray, std::set<const CPDF_Object*>* pVisited) = 0; // Stock colorspaces are not loaded normally. This initializes their // components count. void SetComponentsForStockCS(uint32_t nComponents);
+ show +
131
132
133
134
UnownedPtr<CPDF_Document> const m_pDocument; RetainPtr<const CPDF_Array> m_pArray; const int m_Family; uint32_t m_dwStdConversion = 0;
+ show +
135
136
137
138
139
140
private: uint32_t m_nComponents = 0; }; #endif // CORE_FPDFAPI_PAGE_CPDF_COLORSPACE_H_

[CVE-2023-40093_1.diff] cpdf_contentmarks.cpp #5
-void CPDF_ContentMarks::DeleteLastMark() { - if (!m_pMarkData) - return; - - m_pMarkData->DeleteLastMark(); - if (CountItems() == 0) - m_pMarkData.Reset(); -} -
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_contentmarks.cpp
66
67
68
69
70
71
72
73
74
75
bool CPDF_ContentMarks::RemoveMark(CPDF_ContentMarkItem* pMarkItem) { return m_pMarkData && m_pMarkData->RemoveMark(pMarkItem); } void CPDF_ContentMarks::EnsureMarkDataExists() { if (!m_pMarkData) m_pMarkData = pdfium::MakeRetain<MarkData>(); }
+ show +
76
77
78
79
80
81
82
void CPDF_ContentMarks::DeleteLastMark() { if (!m_pMarkData) return; m_pMarkData->DeleteLastMark(); if (CountItems() == 0) m_pMarkData.Reset();
+ show +
83
84
85
86
87
88
89
90
91
92
} size_t CPDF_ContentMarks::FindFirstDifference( const CPDF_ContentMarks* other) const { if (m_pMarkData == other->m_pMarkData) return CountItems(); size_t min_len = std::min(CountItems(), other->CountItems()); for (size_t i = 0; i < min_len; ++i) {

[CVE-2023-40093_1.diff] cpdf_colorspace.cpp #30
- if (m_pProfile->transform()) - return m_pProfile->transform()->IsNormal(); - if (m_pAlterCS) - return m_pAlterCS->IsNormal(); + if (m_pProfile->IsSupported()) + return m_pProfile->IsNormal(); + if (m_pBaseCS) + return m_pBaseCS->IsNormal();
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_colorspace.cpp
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
index *= 3; *pDestBuf++ = m_pCache[index]; *pDestBuf++ = m_pCache[index + 1]; *pDestBuf++ = m_pCache[index + 2]; } } bool CPDF_ICCBasedCS::IsNormal() const { if (m_pProfile->IsSRGB()) return true;
+ show +
1057
1058
1059
1060
if (m_pProfile->transform()) return m_pProfile->transform()->IsNormal(); if (m_pAlterCS) return m_pAlterCS->IsNormal();
+ show +
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
return false; } bool CPDF_ICCBasedCS::FindAlternateProfile( CPDF_Document* pDoc, const CPDF_Dictionary* pDict, std::set<const CPDF_Object*>* pVisited, uint32_t nExpectedComponents) { const CPDF_Object* pAlterCSObj = pDict->GetDirectObjectFor("Alternate"); if (!pAlterCSObj)

[CVE-2023-40093_1.diff] cpdf_pageobject.h #3
+// Represents an object within the page, like a form or image. Not to be +// confused with the PDF spec's page object that lives in a page tree, which is +// represented by CPDF_Page. - enum Type { - TEXT = 1, - PATH, - IMAGE, - SHADING, - FORM, + // Values must match corresponding values in //public. + enum class Type { + kText = 1, + kPath, + kImage, + kShading, + kForm,
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_pageobject.h
13
14
15
16
17
18
19
20
21
22
#include "core/fxcrt/fx_system.h" class CPDF_FormObject; class CPDF_ImageObject; class CPDF_PathObject; class CPDF_ShadingObject; class CPDF_TextObject; class CPDF_PageObject : public CPDF_GraphicStates { public:
+ show +
23
24
25
26
27
28
enum Type { TEXT = 1, PATH, IMAGE, SHADING, FORM,
+ show +
29
30
31
32
33
34
35
36
37
38
}; static constexpr int32_t kNoContentStream = -1; explicit CPDF_PageObject(int32_t content_stream); CPDF_PageObject(const CPDF_PageObject& src) = delete; CPDF_PageObject& operator=(const CPDF_PageObject& src) = delete; ~CPDF_PageObject() override; virtual Type GetType() const = 0;

[CVE-2023-40093_1.diff] cpdf_docpagedata.cpp #19
- int flags = CalculateFlags(false, pLogFont->lfItalic != 0, - (pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH, - (pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN, - (pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT, - pLogFont->lfCharSet == FX_CHARSET_Symbol); + int flags = CalculateFlags( + false, pLogFont->lfItalic != 0, + (pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH, + (pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN, + (pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT, + pLogFont->lfCharSet == static_cast<int>(FX_Charset::kSymbol)); - const bool bCJK = FX_CharSetIsCJK(pLogFont->lfCharSet); + const FX_Charset eCharset = FX_GetCharsetFromInt(pLogFont->lfCharSet); + const bool bCJK = FX_CharSetIsCJK(eCharset);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_docpagedata.cpp
546
547
548
549
550
551
552
553
554
555
if (tm_size == 0) { hFont = SelectObject(hDC, hFont); DeleteObject(hFont); DeleteDC(hDC); return nullptr; } LPBYTE tm_buf = FX_Alloc(BYTE, tm_size); OUTLINETEXTMETRIC* ptm = reinterpret_cast<OUTLINETEXTMETRIC*>(tm_buf); GetOutlineTextMetrics(hDC, tm_size, ptm);
+ show +
556
557
558
559
560
561
562
int flags = CalculateFlags(false, pLogFont->lfItalic != 0, (pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH, (pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN, (pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT, pLogFont->lfCharSet == FX_CHARSET_Symbol); const bool bCJK = FX_CharSetIsCJK(pLogFont->lfCharSet);
+ show +
563
564
565
566
567
568
569
570
571
572
ByteString basefont; if (bCJK) basefont = GetPSNameFromTT(hDC); if (basefont.IsEmpty()) basefont = pLogFont->lfFaceName; int italicangle = ptm->otmItalicAngle / 10; int ascend = ptm->otmrcFontBox.top; int descend = ptm->otmrcFontBox.bottom;

[CVE-2023-40093_1.diff] cpdf_dib.cpp #22
- RetainPtr<const CPDF_Stream> mask) { - m_pMask = pdfium::MakeRetain<CPDF_DIB>(); - LoadState ret = m_pMask->StartLoadDIBBase( - m_pDocument.Get(), mask.Get(), false, nullptr, nullptr, true, 0, false); + RetainPtr<const CPDF_Stream> mask_stream) { + m_pMask = pdfium::MakeRetain<CPDF_DIB>(m_pDocument, std::move(mask_stream)); + LoadState ret = m_pMask->StartLoadDIBBase(false, nullptr, nullptr, true, + CPDF_ColorSpace::Family::kUnknown, + false, {0, 0});
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_dib.cpp
741
742
743
744
745
746
747
748
749
750
RetainPtr<CPDF_DIB> CPDF_DIB::DetachMask() { return std::move(m_pMask); } bool CPDF_DIB::IsJBigImage() const { return m_pStreamAcc->GetImageDecoder() == "JBIG2Decode"; } CPDF_DIB::LoadState CPDF_DIB::StartLoadMaskDIB(
+ show +
751
752
753
754
RetainPtr<const CPDF_Stream> mask) { m_pMask = pdfium::MakeRetain<CPDF_DIB>(); LoadState ret = m_pMask->StartLoadDIBBase( m_pDocument.Get(), mask.Get(), false, nullptr, nullptr, true, 0, false);
+ show +
755
756
757
758
759
760
761
762
763
764
if (ret == LoadState::kContinue) { if (m_Status == LoadState::kFail) m_Status = LoadState::kContinue; return LoadState::kContinue; } if (ret == LoadState::kFail) m_pMask.Reset(); return LoadState::kSuccess; }

[CVE-2023-40093_1.diff] cpdf_dib.cpp #25
- color_values[0] += m_CompData[0].m_DecodeStep; - color_values[1] += m_CompData[0].m_DecodeStep; - color_values[2] += m_CompData[0].m_DecodeStep; - m_pColorSpace->GetRGB(color_values, &R, &G, &B); - FX_ARGB argb1 = ArgbEncode(255, FXSYS_roundf(R * 255), - FXSYS_roundf(G * 255), FXSYS_roundf(B * 255)); + FX_ARGB argb1; + const CPDF_IndexedCS* indexed_cs = m_pColorSpace->AsIndexedCS(); + if (indexed_cs && indexed_cs->GetMaxIndex() == 0) { + // If an indexed color space's hival value is 0, only 1 color is specified + // in the lookup table. Another color should be set to 0xFF000000 by + // default to set the range of the color space. + argb1 = 0xFF000000; + } else { + color_values[0] += m_CompData[0].m_DecodeStep; + color_values[1] += m_CompData[0].m_DecodeStep; + color_values[2] += m_CompData[0].m_DecodeStep; + m_pColorSpace->GetRGB(color_values, &R, &G, &B); + argb1 = ArgbEncode(255, FXSYS_roundf(R * 255), FXSYS_roundf(G * 255), + FXSYS_roundf(B * 255)); + } +
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_dib.cpp
790
791
792
793
794
795
796
797
798
799
color_values[1] = color_values[0]; color_values[2] = color_values[0]; float R = 0.0f; float G = 0.0f; float B = 0.0f; m_pColorSpace->GetRGB(color_values, &R, &G, &B); FX_ARGB argb0 = ArgbEncode(255, FXSYS_roundf(R * 255), FXSYS_roundf(G * 255), FXSYS_roundf(B * 255));
+ show +
800
801
802
803
804
805
color_values[0] += m_CompData[0].m_DecodeStep; color_values[1] += m_CompData[0].m_DecodeStep; color_values[2] += m_CompData[0].m_DecodeStep; m_pColorSpace->GetRGB(color_values, &R, &G, &B); FX_ARGB argb1 = ArgbEncode(255, FXSYS_roundf(R * 255), FXSYS_roundf(G * 255), FXSYS_roundf(B * 255));
+ show +
806
807
808
809
810
811
812
813
814
815
if (argb0 != 0xFF000000 || argb1 != 0xFFFFFFFF) { SetPaletteArgb(0, argb0); SetPaletteArgb(1, argb1); } return; } if (m_bpc == 8 && m_bDefaultDecode && m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)) { return; }

[CVE-2023-40093_1.diff] cpdf_occontext.cpp #10
- const CPDF_Array* pVE = pOCMDDict->GetArrayFor("VE"); - if (pVE) - return GetOCGVE(pVE, 0); + RetainPtr<const CPDF_Array> pVE = pOCMDDict->GetArrayFor("VE"); + if (pVE) { + return GetOCGVE(pVE.Get(), 0); + } - ByteString csP = pOCMDDict->GetStringFor("P", "AnyOn"); - const CPDF_Object* pOCGObj = pOCMDDict->GetDirectObjectFor("OCGs"); + ByteString csP = pOCMDDict->GetByteStringFor("P", "AnyOn"); + RetainPtr<const CPDF_Object> pOCGObj = pOCMDDict->GetDirectObjectFor("OCGs");
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_occontext.cpp
231
232
233
234
235
236
237
238
239
240
bValue = bValue || bItem; } else { bValue = bValue && bItem; } } } return bValue; } bool CPDF_OCContext::LoadOCMDState(const CPDF_Dictionary* pOCMDDict) const {
+ show +
241
242
243
244
245
246
const CPDF_Array* pVE = pOCMDDict->GetArrayFor("VE"); if (pVE) return GetOCGVE(pVE, 0); ByteString csP = pOCMDDict->GetStringFor("P", "AnyOn"); const CPDF_Object* pOCGObj = pOCMDDict->GetDirectObjectFor("OCGs");
+ show +
247
248
249
250
251
252
253
254
255
256
if (!pOCGObj) return true; if (const CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) return GetOCGVisible(pDict); const CPDF_Array* pArray = pOCGObj->AsArray(); if (!pArray) return true;

[CVE-2023-40093_1.diff] cpdf_generalstate.cpp #6
-void CPDF_GeneralState::SetBG(CPDF_Object* pObject) { - m_Ref.GetPrivateCopy()->m_pBG.Reset(pObject); +void CPDF_GeneralState::SetBG(RetainPtr<const CPDF_Object> pObject) { + m_Ref.GetPrivateCopy()->m_pBG = std::move(pObject); -void CPDF_GeneralState::SetUCR(CPDF_Object* pObject) { - m_Ref.GetPrivateCopy()->m_pUCR.Reset(pObject); +void CPDF_GeneralState::SetUCR(RetainPtr<const CPDF_Object> pObject) { + m_Ref.GetPrivateCopy()->m_pUCR = std::move(pObject); -void CPDF_GeneralState::SetHT(CPDF_Object* pObject) { - m_Ref.GetPrivateCopy()->m_pHT.Reset(pObject); +void CPDF_GeneralState::SetHT(RetainPtr<const CPDF_Object> pObject) { + m_Ref.GetPrivateCopy()->m_pHT = std::move(pObject);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_generalstate.cpp
204
205
206
207
208
209
210
211
212
213
} int CPDF_GeneralState::GetOPMode() const { return m_Ref.GetObject()->m_OPMode; } void CPDF_GeneralState::SetOPMode(int mode) { m_Ref.GetPrivateCopy()->m_OPMode = mode; }
+ show +
214
215
216
217
218
219
220
221
222
223
void CPDF_GeneralState::SetBG(CPDF_Object* pObject) { m_Ref.GetPrivateCopy()->m_pBG.Reset(pObject); } void CPDF_GeneralState::SetUCR(CPDF_Object* pObject) { m_Ref.GetPrivateCopy()->m_pUCR.Reset(pObject); } void CPDF_GeneralState::SetHT(CPDF_Object* pObject) { m_Ref.GetPrivateCopy()->m_pHT.Reset(pObject);
+ show +
224
225
226
227
228
229
230
231
232
233
} void CPDF_GeneralState::SetFlatness(float flatness) { m_Ref.GetPrivateCopy()->m_Flatness = flatness; } void CPDF_GeneralState::SetSmoothness(float smoothness) { m_Ref.GetPrivateCopy()->m_Smoothness = smoothness; }

[CVE-2023-40093_1.diff] cpdf_occontext.h #3
- enum UsageType { View = 0, Design, Print, Export }; + enum UsageType { kView = 0, kDesign, kPrint, kExport }; - template <typename T, typename... Args> - friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); + CONSTRUCT_VIA_MAKE_RETAIN; - bool CheckOCGVisible(const CPDF_Dictionary* pOCGDict) const; - bool CheckObjectVisible(const CPDF_PageObject* pObj) const; + bool CheckOCGDictVisible(const CPDF_Dictionary* pOCGDict) const; + bool CheckPageObjectVisible(const CPDF_PageObject* pObj) const;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_occontext.h
12
13
14
15
16
17
18
19
20
21
#include "core/fxcrt/fx_string.h" #include "core/fxcrt/retain_ptr.h" class CPDF_Array; class CPDF_Dictionary; class CPDF_Document; class CPDF_PageObject; class CPDF_OCContext final : public Retainable { public:
+ show +
22
23
24
25
26
27
28
enum UsageType { View = 0, Design, Print, Export }; template <typename T, typename... Args> friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); bool CheckOCGVisible(const CPDF_Dictionary* pOCGDict) const; bool CheckObjectVisible(const CPDF_PageObject* pObj) const;
+ show +
29
30
31
32
33
34
35
36
37
38
private: CPDF_OCContext(CPDF_Document* pDoc, UsageType eUsageType); ~CPDF_OCContext() override; bool LoadOCGStateFromConfig(const ByteString& csConfig, const CPDF_Dictionary* pOCGDict) const; bool LoadOCGState(const CPDF_Dictionary* pOCGDict) const; bool GetOCGVisible(const CPDF_Dictionary* pOCGDict) const; bool GetOCGVE(const CPDF_Array* pExpression, int nLevel) const;

[CVE-2023-40093_1.diff] cpdf_pageobjectholder.h #5
- RetainPtr<CPDF_Dictionary> m_pPageResources; - RetainPtr<CPDF_Dictionary> m_pResources; - std::map<GraphicsData, ByteString> m_GraphicsMap; - std::map<FontData, ByteString> m_FontsMap; + absl::optional<ByteString> GraphicsMapSearch(const GraphicsData& gd); + void GraphicsMapInsert(const GraphicsData& gd, const ByteString& str); + + absl::optional<ByteString> FontsMapSearch(const FontData& fd); + void FontsMapInsert(const FontData& fd, const ByteString& str); + RetainPtr<CPDF_Dictionary> m_pPageResources; + RetainPtr<CPDF_Dictionary> m_pResources; + std::map<GraphicsData, ByteString> m_GraphicsMap; + std::map<FontData, ByteString> m_FontsMap;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/page/cpdf_pageobjectholder.h
89
90
91
92
93
94
95
96
97
98
} bool HasImageMask() const { return !m_MaskBoundingBoxes.empty(); } const std::vector<CFX_FloatRect>& GetMaskBoundingBoxes() const { return m_MaskBoundingBoxes; } void AddImageMaskBoundingBox(const CFX_FloatRect& box); bool HasDirtyStreams() const { return !m_DirtyStreams.empty(); } std::set<int32_t> TakeDirtyStreams();
+ show +
99
100
101
102
RetainPtr<CPDF_Dictionary> m_pPageResources; RetainPtr<CPDF_Dictionary> m_pResources; std::map<GraphicsData, ByteString> m_GraphicsMap; std::map<FontData, ByteString> m_FontsMap;
+ show +
103
104
105
106
107
108
109
110
111
112
protected: void LoadTransparencyInfo(); CFX_FloatRect m_BBox; CPDF_Transparency m_Transparency; private: bool m_bBackgroundAlphaNeeded = false; ParseState m_ParseState = ParseState::kNotParsed;

[CVE-2023-40093_1.diff] cpdf_simplefont.cpp #6
- const CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictFor("FontDescriptor"); - if (pFontDesc) { - LoadFontDescriptor(pFontDesc); - } - const CPDF_Array* pWidthArray = m_pFontDict->GetArrayFor("Widths"); - m_bUseFontWidth = !pWidthArray; - if (pWidthArray) { - if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) { - int MissingWidth = pFontDesc->GetIntegerFor("MissingWidth"); - for (int i = 0; i < 256; i++) { - m_CharWidth[i] = MissingWidth; - } - } - size_t width_start = m_pFontDict->GetIntegerFor("FirstChar", 0); - size_t width_end = m_pFontDict->GetIntegerFor("LastChar", 0); - if (width_start <= 255) { - if (width_end == 0 || width_end >= width_start + pWidthArray->size()) - width_end = width_start + pWidthArray->size() - 1; - if (width_end > 255) - width_end = 255; - for (size_t i = width_start; i <= width_end; i++) - m_CharWidth[i] = pWidthArray->GetIntegerAt(i - width_start); - } - } + RetainPtr<const CPDF_Dictionary> pFontDesc = + m_pFontDict->GetDictFor("FontDescriptor"); + if (pFontDesc) + LoadFontDescriptor(pFontDesc.Get()); + LoadCharWidths(pFontDesc.Get());
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/font/cpdf_simplefont.cpp
180
181
182
183
184
185
186
187
188
189
if (charcode > 0xff) charcode = 0; if (m_CharBBox[charcode].left == -1) LoadCharMetrics(charcode); return m_CharBBox[charcode]; } bool CPDF_SimpleFont::LoadCommon() {
+ show +
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
const CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictFor("FontDescriptor"); if (pFontDesc) { LoadFontDescriptor(pFontDesc); } const CPDF_Array* pWidthArray = m_pFontDict->GetArrayFor("Widths"); m_bUseFontWidth = !pWidthArray; if (pWidthArray) { if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) { int MissingWidth = pFontDesc->GetIntegerFor("MissingWidth"); for (int i = 0; i < 256; i++) { m_CharWidth[i] = MissingWidth; } } size_t width_start = m_pFontDict->GetIntegerFor("FirstChar", 0); size_t width_end = m_pFontDict->GetIntegerFor("LastChar", 0); if (width_start <= 255) { if (width_end == 0 || width_end >= width_start + pWidthArray->size()) width_end = width_start + pWidthArray->size() - 1; if (width_end > 255) width_end = 255; for (size_t i = width_start; i <= width_end; i++) m_CharWidth[i] = pWidthArray->GetIntegerAt(i - width_start);
+ show +
212
213
214
215
216
217
218
219
220
221
} } if (m_pFontFile) { if (m_BaseFontName.GetLength() > 8 && m_BaseFontName[7] == '+') m_BaseFontName = m_BaseFontName.Last(m_BaseFontName.GetLength() - 8); } else { LoadSubstFont(); } if (!FontStyleIsSymbolic(m_Flags)) m_BaseEncoding = PDFFONT_ENCODING_STANDARD;

[CVE-2023-40093_1.diff] cfx_cttgsubtable.h #5
- void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec); - void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec); - void ParseSingleSubst(FT_Bytes raw, std::unique_ptr<TSubTableBase>* rec); - void ParseSingleSubstFormat1(FT_Bytes raw, TSubTable1* rec); - void ParseSingleSubstFormat2(FT_Bytes raw, TSubTable2* rec); + std::unique_ptr<TCoverageFormat1> ParseCoverageFormat1(FT_Bytes raw); + std::unique_ptr<TCoverageFormat2> ParseCoverageFormat2(FT_Bytes raw); + std::unique_ptr<TSubTableBase> ParseSingleSubst(FT_Bytes raw); + std::unique_ptr<TSubTable1> ParseSingleSubstFormat1(FT_Bytes raw); + std::unique_ptr<TSubTable2> ParseSingleSubstFormat2(FT_Bytes raw); - bool GetVerticalGlyphSub(const TFeatureRecord& feature, - uint32_t glyphnum, - uint32_t* vglyphnum) const; - bool GetVerticalGlyphSub2(const TLookup& lookup, - uint32_t glyphnum, - uint32_t* vglyphnum) const; + absl::optional<uint32_t> GetVerticalGlyphSub(const TFeatureRecord& feature, + uint32_t glyphnum) const; + absl::optional<uint32_t> GetVerticalGlyphSub2(const TLookup& lookup, + uint32_t glyphnum) const;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/font/cfx_cttgsubtable.h
120
121
122
123
124
125
126
127
128
129
bool LoadGSUBTable(FT_Bytes gsub); bool Parse(FT_Bytes scriptlist, FT_Bytes featurelist, FT_Bytes lookuplist); void ParseScriptList(FT_Bytes raw); void ParseScript(FT_Bytes raw, TScriptRecord* rec); void ParseLangSys(FT_Bytes raw, TLangSysRecord* rec); void ParseFeatureList(FT_Bytes raw); void ParseFeature(FT_Bytes raw, TFeatureRecord* rec); void ParseLookupList(FT_Bytes raw); void ParseLookup(FT_Bytes raw, TLookup* rec); std::unique_ptr<TCoverageFormatBase> ParseCoverage(FT_Bytes raw);
+ show +
130
131
132
133
134
135
136
137
138
139
140
141
void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec); void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec); void ParseSingleSubst(FT_Bytes raw, std::unique_ptr<TSubTableBase>* rec); void ParseSingleSubstFormat1(FT_Bytes raw, TSubTable1* rec); void ParseSingleSubstFormat2(FT_Bytes raw, TSubTable2* rec); bool GetVerticalGlyphSub(const TFeatureRecord& feature, uint32_t glyphnum, uint32_t* vglyphnum) const; bool GetVerticalGlyphSub2(const TLookup& lookup, uint32_t glyphnum, uint32_t* vglyphnum) const;
+ show +
142
143
144
145
146
147
148
149
150
151
int GetCoverageIndex(TCoverageFormatBase* Coverage, uint32_t g) const; uint8_t GetUInt8(FT_Bytes& p) const; int16_t GetInt16(FT_Bytes& p) const; uint16_t GetUInt16(FT_Bytes& p) const; int32_t GetInt32(FT_Bytes& p) const; uint32_t GetUInt32(FT_Bytes& p) const; std::set<uint32_t> m_featureSet; std::vector<TScriptRecord> ScriptList;

[CVE-2023-40093_1.diff] cpdf_cmap.h #2
+#include <stdint.h> + +#include "core/fxcrt/fixed_zeroed_data_vector.h" +#include "core/fxcrt/unowned_ptr.h" -struct FXCMAP_CMap; +namespace fxcmap { +struct CMap; +} -enum CIDCoding : uint8_t { - CIDCODING_UNKNOWN = 0, - CIDCODING_GB, - CIDCODING_BIG5, - CIDCODING_JIS, - CIDCODING_KOREA, - CIDCODING_UCS2, - CIDCODING_CID, - CIDCODING_UTF16, +enum class CIDCoding : uint8_t { + kUNKNOWN = 0, + kGB, + kBIG5, + kJIS, + kKOREA, + kUCS2, + kCID, + kUTF16, + static constexpr size_t kDirectMapTableSize = 65536; +
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/font/cpdf_cmap.h
6
7
8
9
10
11
12
13
14
15
#ifndef CORE_FPDFAPI_FONT_CPDF_CMAP_H_ #define CORE_FPDFAPI_FONT_CPDF_CMAP_H_ #include <vector> #include "core/fpdfapi/font/cpdf_cidfont.h" #include "core/fxcrt/retain_ptr.h" #include "third_party/base/span.h"
+ show +
16
17
18
19
20
21
22
23
24
25
26
struct FXCMAP_CMap; enum CIDCoding : uint8_t { CIDCODING_UNKNOWN = 0, CIDCODING_GB, CIDCODING_BIG5, CIDCODING_JIS, CIDCODING_KOREA, CIDCODING_UCS2, CIDCODING_CID, CIDCODING_UTF16,
+ show +
27
28
29
30
31
32
33
34
35
36
}; class CPDF_CMap final : public Retainable { public: enum CodingScheme : uint8_t { OneByte, TwoBytes, MixedTwoBytes, MixedFourBytes };

[CVE-2023-40093_1.diff] cpdf_font.cpp #9
- if (m_FontBBox.top < rect.top) { - m_FontBBox.top = rect.top; - } - if (m_FontBBox.right < rect.right) { - m_FontBBox.right = rect.right; - } - if (m_FontBBox.left > rect.left) { - m_FontBBox.left = rect.left; - } - if (m_FontBBox.bottom > rect.bottom) { - m_FontBBox.bottom = rect.bottom; - } + m_FontBBox.left = std::min(m_FontBBox.left, rect.left); + m_FontBBox.top = std::max(m_FontBBox.top, rect.top); + m_FontBBox.right = std::max(m_FontBBox.right, rect.right); + m_FontBBox.bottom = std::min(m_FontBBox.bottom, rect.bottom);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/font/cpdf_font.cpp
236
237
238
239
240
241
242
243
244
245
bool bFirst = true; for (int i = 0; i < 256; i++) { FX_RECT rect = GetCharBBox(i); if (rect.left == rect.right) { continue; } if (bFirst) { m_FontBBox = rect; bFirst = false; } else {
+ show +
246
247
248
249
250
251
252
253
254
255
256
if (m_FontBBox.top < rect.top) { m_FontBBox.top = rect.top; } if (m_FontBBox.right < rect.right) { m_FontBBox.right = rect.right; } if (m_FontBBox.left > rect.left) { m_FontBBox.left = rect.left; } if (m_FontBBox.bottom > rect.bottom) { m_FontBBox.bottom = rect.bottom;
+ show +
257
258
259
260
261
262
263
264
265
266
} } } } } if (m_Ascent == 0 && m_Descent == 0) { FX_RECT rect = GetCharBBox('A'); m_Ascent = rect.bottom == rect.top ? m_FontBBox.top : rect.top; rect = GetCharBBox('g'); m_Descent = rect.bottom == rect.top ? m_FontBBox.bottom : rect.bottom;

[CVE-2023-40093_1.diff] cpdf_hint_tables.h #3
- // Owned by |m_pDataAvail|. - UnownedPtr<CPDF_ReadValidator> m_pValidator; - - // Owned by |m_pDataAvail|. - UnownedPtr<CPDF_LinearizedHeader> const m_pLinearized; - - uint32_t m_nFirstPageSharedObjs; - FX_FILESIZE m_szFirstPageObjOffset; - + uint32_t m_nFirstPageSharedObjs = 0; + FX_FILESIZE m_szFirstPageObjOffset = 0; + UnownedPtr<CPDF_ReadValidator> m_pValidator; + UnownedPtr<const CPDF_LinearizedHeader> const m_pLinearized;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_hint_tables.h
93
94
95
96
97
98
99
100
101
102
FX_FILESIZE GetFirstPageObjOffset() const { return m_szFirstPageObjOffset; } protected: bool ReadPageHintTable(CFX_BitStream* hStream); bool ReadSharedObjHintTable(CFX_BitStream* hStream, uint32_t offset); private: FX_FILESIZE HintsOffsetToFileOffset(uint32_t hints_offset) const; // Owned by |m_pDataAvail|.
+ show +
103
104
105
106
107
108
109
UnownedPtr<CPDF_ReadValidator> m_pValidator; // Owned by |m_pDataAvail|. UnownedPtr<CPDF_LinearizedHeader> const m_pLinearized; uint32_t m_nFirstPageSharedObjs; FX_FILESIZE m_szFirstPageObjOffset;
+ show +
110
111
112
113
114
115
std::vector<PageInfo> m_PageInfos; std::vector<SharedObjGroupInfo> m_SharedObjGroupInfos; }; #endif // CORE_FPDFAPI_PARSER_CPDF_HINT_TABLES_H_

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #3
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); + EXPECT_EQ(CPDF_DataAvail::kDataAvailable, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, CheckCrossRefStream) { +TEST(CrossRefAvailTest, CheckCrossRefStream) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
32
33
34
35
36
37
38
39
40
41
"0000000000 00007 f \n" "0000000331 00000 n \n" "0000000409 00000 n \n" "trailer\n" "<</Root 14 0 R/ID " "[<afbb0f593c2d2aea5b519cb61da1c17b><4f9bb2e7978401808f8f1f2a75c322c8>]" "/Info 15 0 R/Size 16>>"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(xref_table);
+ show +
42
43
44
45
46
47
48
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, CheckCrossRefStream) {
+ show +
49
50
51
52
53
54
55
56
57
58
const unsigned char xref_stream[] = "16 0 obj\n" "<</Filter /FlateDecode>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(xref_stream);

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #4
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); + EXPECT_EQ(CPDF_DataAvail::kDataAvailable, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, IncorrectStartOffset) { +TEST(CrossRefAvailTest, IncorrectStartOffset) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
49
50
51
52
53
54
55
56
57
58
const unsigned char xref_stream[] = "16 0 obj\n" "<</Filter /FlateDecode>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(xref_stream);
+ show +
59
60
61
62
63
64
65
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, IncorrectStartOffset) {
+ show +
66
67
68
69
70
71
72
73
74
75
const unsigned char xref_stream[] = "16 0 obj\n" "<</Filter /FlateDecode>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 70000;

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #5
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); + EXPECT_EQ(CPDF_DataAvail::kDataError, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, IncorrectPrevOffset) { +TEST(CrossRefAvailTest, IncorrectPrevOffset) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
67
68
69
70
71
72
73
74
75
76
"16 0 obj\n" "<</Filter /FlateDecode>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 70000; auto parser = MakeParserForBuffer(xref_stream);
+ show +
77
78
79
80
81
82
83
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, IncorrectPrevOffset) {
+ show +
84
85
86
87
88
89
90
91
92
93
const unsigned char xref_stream[] = "16 0 obj\n" "<</Type /XRef /Prev 70000>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(xref_stream);

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #6
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); + EXPECT_EQ(CPDF_DataAvail::kDataError, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, IncorrectPrevStreamOffset) { +TEST(CrossRefAvailTest, IncorrectPrevStreamOffset) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
84
85
86
87
88
89
90
91
92
93
const unsigned char xref_stream[] = "16 0 obj\n" "<</Type /XRef /Prev 70000>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(xref_stream);
+ show +
94
95
96
97
98
99
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, IncorrectPrevStreamOffset) {
+ show +
100
101
102
103
104
105
106
107
108
109
const unsigned char xref_table[] = "xref \n" "0 6 \n" "0000000003 65535 f \n" "0000000017 00000 n \n" "0000000081 00000 n \n" "0000000000 00007 f \n" "0000000331 00000 n \n" "0000000409 00000 n \n" "trailer\n"

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #8
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); + EXPECT_EQ(CPDF_DataAvail::kDataAvailable, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, ThreeCrossRefV5) { +TEST(CrossRefAvailTest, ThreeCrossRefV5) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
166
167
168
169
170
171
172
173
174
175
"trailer\n" "<</Root 14 0 R/ID " "[<afbb0f593c2d2aea5b519cb61da1c17b><" "4f9bb2e7978401808f8f1f2a75c322c8>]" "/Info 15 0 R/Size 16" "/Prev ") + FXSYS_itoa(static_cast<int>(prev_offset), int_buffer, 10) + ">>\n"; const FX_FILESIZE last_crossref_offset = static_cast<FX_FILESIZE>(cur_offset); auto parser = MakeParserForBuffer(pdfium::as_bytes(pdfium::make_span(table)));
+ show +
176
177
178
179
180
181
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, ThreeCrossRefV5) {
+ show +
182
183
184
185
186
187
188
189
190
191
char int_buffer[100]; std::string table = "pdf blah blah blah\n"; size_t cur_offset = table.size(); table += "16 0 obj\n" "<</Type /XRef>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA ahfcuabfkuabfu\n" "endstream\n" "endobj\n";

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #9
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); + EXPECT_EQ(CPDF_DataAvail::kDataAvailable, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, Mixed) { +TEST(CrossRefAvailTest, Mixed) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
210
211
212
213
214
215
216
217
218
219
"<</Type /XRef /NNNN /Prev ") + FXSYS_itoa(static_cast<int>(prev_offset), int_buffer, 10) + ">>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA favav\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = static_cast<FX_FILESIZE>(cur_offset); auto parser = MakeParserForBuffer(pdfium::as_bytes(pdfium::make_span(table)));
+ show +
220
221
222
223
224
225
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, Mixed) {
+ show +
226
227
228
229
230
231
232
233
234
235
char int_buffer[100]; std::string table = "pdf blah blah blah\n"; const int first_v5_table_offset = static_cast<int>(table.size()); table += "16 0 obj\n" "<</Type /XRef>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA ahfcuabfkuabfu\n" "endstream\n"

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #10
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); + EXPECT_EQ(CPDF_DataAvail::kDataAvailable, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, CrossRefV5IsNotStream) { +TEST(CrossRefAvailTest, CrossRefV5IsNotStream) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
259
260
261
262
263
264
265
266
267
268
"<</Root 14 0 R/ID " "[<afbb0f593c2d2aea5b519cb61da1c17b><" "4f9bb2e7978401808f8f1f2a75c322c8>]" "/Info 15 0 R/Size 16" "/Prev ") + FXSYS_itoa(second_v4_table_offset, int_buffer, 10) + " /XRefStm " + FXSYS_itoa(first_v5_table_offset, int_buffer, 10) + ">>\n"; const FX_FILESIZE last_crossref_offset = last_v4_table_offset; auto parser = MakeParserForBuffer(pdfium::as_bytes(pdfium::make_span(table)));
+ show +
269
270
271
272
273
274
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataAvailable, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, CrossRefV5IsNotStream) {
+ show +
275
276
277
278
279
280
281
282
283
284
const unsigned char invalid_xref_stream[] = "16 0 obj\n" "[/array /object]\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(invalid_xref_stream); auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset);

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #11
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); + EXPECT_EQ(CPDF_DataAvail::kDataError, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, CrossRefV4WithEncryptRef) { +TEST(CrossRefAvailTest, CrossRefV4WithEncryptRef) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
273
274
275
276
277
278
279
280
281
282
TEST(CPDF_CrossRefAvailTest, CrossRefV5IsNotStream) { const unsigned char invalid_xref_stream[] = "16 0 obj\n" "[/array /object]\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(invalid_xref_stream);
+ show +
283
284
285
286
287
288
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, CrossRefV4WithEncryptRef) {
+ show +
289
290
291
292
293
294
295
296
297
298
const unsigned char xref_table[] = "xref \n" "0 6 \n" "0000000003 65535 f \n" "0000000017 00000 n \n" "0000000081 00000 n \n" "0000000000 00007 f \n" "0000000331 00000 n \n" "0000000409 00000 n \n" "trailer\n"

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail_unittest.cpp #12
- auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( - parser.get(), last_crossref_offset); - EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); + auto cross_ref_avail = + std::make_unique<CPDF_CrossRefAvail>(parser.get(), last_crossref_offset); + EXPECT_EQ(CPDF_DataAvail::kDataError, cross_ref_avail->CheckAvail()); -TEST(CPDF_CrossRefAvailTest, CrossRefStreamWithEncryptRef) { +TEST(CrossRefAvailTest, CrossRefStreamWithEncryptRef) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail_unittest.cpp
296
297
298
299
300
301
302
303
304
305
"0000000331 00000 n \n" "0000000409 00000 n \n" "trailer\n" "<</Root 14 0 R/ID " "[<afbb0f593c2d2aea5b519cb61da1c17b><4f9bb2e7978401808f8f1f2a75c322c8>]" "/Encrypt 77 0 R" "/Info 15 0 R/Size 16>>"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(xref_table);
+ show +
306
307
308
309
310
311
auto cross_ref_avail = pdfium::MakeUnique<CPDF_CrossRefAvail>( parser.get(), last_crossref_offset); EXPECT_EQ(CPDF_DataAvail::DataError, cross_ref_avail->CheckAvail()); } TEST(CPDF_CrossRefAvailTest, CrossRefStreamWithEncryptRef) {
+ show +
312
313
314
315
316
317
318
319
320
321
const unsigned char xref_stream[] = "16 0 obj\n" "<</Filter /FlateDecode /Encrypt 77 0 R>>" " stream \n" "STREAM DATA STREAM DATA STREAM DATA\n" "endstream\n" "endobj\n"; const FX_FILESIZE last_crossref_offset = 0; auto parser = MakeParserForBuffer(xref_stream);

[CVE-2023-40093_1.diff] BUILD.gn #5
+ ":unit_test_support", + "../page:unit_test_support", - if (is_clang) { - # Suppress no override warning for overridden functions. - cflags = [ "-Wno-inconsistent-missing-override" ] - }
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/BUILD.gn
119
120
121
122
123
124
125
126
127
128
":parser", "../../../constants", "../page", "../render", ] pdfium_root_dir = "../../../" if (pdf_enable_xfa) { sources += [ "cpdf_seekablemultistream_unittest.cpp" ] }
+ show +
129
130
131
132
if (is_clang) { # Suppress no override warning for overridden functions. cflags = [ "-Wno-inconsistent-missing-override" ] }
+ show +
133
134
135
136
137
138
139
140
141
142
} pdfium_embeddertest_source_set("embeddertests") { sources = [ "cpdf_parser_embeddertest.cpp", "cpdf_security_handler_embeddertest.cpp", "fpdf_parser_decode_embeddertest.cpp", ] deps = [ ":parser" ] pdfium_root_dir = "../../../"

[CVE-2023-40093_1.diff] cpdf_object.h #6
- static const bool value = std::is_same<T, CPDF_Array>::value || - std::is_same<T, CPDF_Dictionary>::value || - std::is_same<T, CPDF_Name>::value || - std::is_same<T, CPDF_String>::value; + static constexpr bool value = std::is_same<T, CPDF_Array>::value || + std::is_same<T, CPDF_Dictionary>::value || + std::is_same<T, CPDF_Name>::value || + std::is_same<T, CPDF_String>::value;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_object.h
118
119
120
121
122
123
124
125
126
127
~CPDF_Object() override; RetainPtr<CPDF_Object> CloneObjectNonCyclic(bool bDirect) const; uint32_t m_ObjNum = 0; uint32_t m_GenNum = 0; }; template <typename T> struct CanInternStrings {
+ show +
128
129
130
131
static const bool value = std::is_same<T, CPDF_Array>::value || std::is_same<T, CPDF_Dictionary>::value || std::is_same<T, CPDF_Name>::value || std::is_same<T, CPDF_String>::value;
+ show +
132
133
134
}; #endif // CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_

[CVE-2023-40093_1.diff] cpdf_object.cpp #2
-#include "third_party/base/logging.h" -#include "third_party/base/ptr_util.h" +#include "third_party/base/notreached.h" -CPDF_Object::~CPDF_Object() {} +CPDF_Object::~CPDF_Object() = default; -CPDF_Object* CPDF_Object::GetDirect() { - return this; +static_assert(sizeof(uint64_t) >= sizeof(CPDF_Object*), + "Need a bigger type for cache keys"); + +static_assert(CPDF_Parser::kMaxObjectNumber < static_cast<uint32_t>(1) << 31, + "Need a smaller kMaxObjNumber for cache keys"); + +uint64_t CPDF_Object::KeyForCache() const { + if (IsInline()) + return (static_cast<uint64_t>(1) << 63) | reinterpret_cast<uint64_t>(this); + + return (static_cast<uint64_t>(m_ObjNum) << 32) | + static_cast<uint64_t>(m_GenNum); -const CPDF_Object* CPDF_Object::GetDirect() const { +RetainPtr<CPDF_Object> CPDF_Object::GetMutableDirect() { + return pdfium::WrapRetain(const_cast<CPDF_Object*>(GetDirectInternal())); +} + +RetainPtr<const CPDF_Object> CPDF_Object::GetDirect() const { + return pdfium::WrapRetain(GetDirectInternal()); +} + +const CPDF_Object* CPDF_Object::GetDirectInternal() const {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_object.cpp
7
8
9
10
11
12
13
14
15
16
#include "core/fpdfapi/parser/cpdf_object.h" #include <algorithm> #include "core/fpdfapi/parser/cpdf_array.h" #include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/parser/cpdf_indirect_object_holder.h" #include "core/fpdfapi/parser/cpdf_parser.h" #include "core/fpdfapi/parser/cpdf_reference.h" #include "core/fxcrt/fx_string.h"
+ show +
17
18
19
20
21
22
23
24
25
26
#include "third_party/base/logging.h" #include "third_party/base/ptr_util.h" CPDF_Object::~CPDF_Object() {} CPDF_Object* CPDF_Object::GetDirect() { return this; } const CPDF_Object* CPDF_Object::GetDirect() const {
+ show +
27
28
29
30
31
32
33
34
35
36
return this; } RetainPtr<CPDF_Object> CPDF_Object::CloneObjectNonCyclic(bool bDirect) const { std::set<const CPDF_Object*> visited_objs; return CloneNonCyclic(bDirect, &visited_objs); } RetainPtr<CPDF_Object> CPDF_Object::CloneDirectObject() const { return CloneObjectNonCyclic(true);

[CVE-2023-40093_1.diff] cpdf_cross_ref_avail.h #3
+#include "core/fxcrt/retain_ptr.h" - UnownedPtr<CPDF_SyntaxParser> parser_; - const FX_FILESIZE last_crossref_offset_ = 0; - CPDF_DataAvail::DocAvailStatus current_status_ = - CPDF_DataAvail::DataNotAvailable; - State current_state_ = State::kCrossRefCheck; - FX_FILESIZE current_offset_ = 0; + UnownedPtr<CPDF_SyntaxParser> const parser_; + const FX_FILESIZE last_crossref_offset_; + CPDF_DataAvail::DocAvailStatus status_ = CPDF_DataAvail::kDataNotAvailable; + State state_ = State::kCrossRefCheck; + FX_FILESIZE offset_ = 0;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail.h
35
36
37
38
39
40
41
42
43
44
bool CheckCrossRef(); bool CheckCrossRefV4(); bool CheckCrossRefV4Item(); bool CheckCrossRefV4Trailer(); bool CheckCrossRefStream(); void AddCrossRefForCheck(FX_FILESIZE crossref_offset); RetainPtr<CPDF_ReadValidator> GetValidator();
+ show +
45
46
47
48
49
50
UnownedPtr<CPDF_SyntaxParser> parser_; const FX_FILESIZE last_crossref_offset_ = 0; CPDF_DataAvail::DocAvailStatus current_status_ = CPDF_DataAvail::DataNotAvailable; State current_state_ = State::kCrossRefCheck; FX_FILESIZE current_offset_ = 0;
+ show +
51
52
53
54
55
std::queue<FX_FILESIZE> cross_refs_for_check_; std::set<FX_FILESIZE> registered_crossrefs_; }; #endif // CORE_FPDFAPI_PARSER_CPDF_CROSS_REF_AVAIL_H_

[CVE-2023-40093_1.diff] cpdf_stream.cpp #5
- std::unique_ptr<uint8_t, FxFreeDeleter> data_copy; - if (!pData.empty()) { - data_copy.reset(FX_Alloc(uint8_t, pData.size())); - memcpy(data_copy.get(), pData.data(), pData.size()); - } - TakeData(std::move(data_copy), pData.size()); + DataVector<uint8_t> data_copy(pData.begin(), pData.end()); + TakeData(std::move(data_copy)); -void CPDF_Stream::TakeData(std::unique_ptr<uint8_t, FxFreeDeleter> pData, - uint32_t size) { - m_bMemoryBased = true; - m_pFile = nullptr; - m_pDataBuf = std::move(pData); - m_dwSize = size; - if (!m_pDict) - m_pDict = pdfium::MakeRetain<CPDF_Dictionary>(); - m_pDict->SetNewFor<CPDF_Number>("Length", static_cast<int>(size)); +void CPDF_Stream::TakeData(DataVector<uint8_t> data) { + const size_t size = data.size(); + data_ = std::move(data); + SetLengthInDict(pdfium::base::checked_cast<int>(size)); -void CPDF_Stream::SetDataFromStringstream(std::ostringstream* stream) { +void CPDF_Stream::SetDataFromStringstream(fxcrt::ostringstream* stream) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_stream.cpp
121
122
123
124
125
126
127
128
129
130
SetDataAndRemoveFilter({}); return; } SetDataAndRemoveFilter( {reinterpret_cast<const uint8_t*>(stream->str().c_str()), static_cast<size_t>(stream->tellp())}); } void CPDF_Stream::SetData(pdfium::span<const uint8_t> pData) {
+ show +
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
std::unique_ptr<uint8_t, FxFreeDeleter> data_copy; if (!pData.empty()) { data_copy.reset(FX_Alloc(uint8_t, pData.size())); memcpy(data_copy.get(), pData.data(), pData.size()); } TakeData(std::move(data_copy), pData.size()); } void CPDF_Stream::TakeData(std::unique_ptr<uint8_t, FxFreeDeleter> pData, uint32_t size) { m_bMemoryBased = true; m_pFile = nullptr; m_pDataBuf = std::move(pData); m_dwSize = size; if (!m_pDict) m_pDict = pdfium::MakeRetain<CPDF_Dictionary>(); m_pDict->SetNewFor<CPDF_Number>("Length", static_cast<int>(size)); } void CPDF_Stream::SetDataFromStringstream(std::ostringstream* stream) {
+ show +
151
152
153
154
155
156
157
158
159
160
if (stream->tellp() <= 0) { SetData({}); return; } SetData({reinterpret_cast<const uint8_t*>(stream->str().c_str()), static_cast<size_t>(stream->tellp())}); } bool CPDF_Stream::ReadRawData(FX_FILESIZE offset, uint8_t* buf,

[CVE-2023-40093_1.diff] cpdf_number.cpp #4
-bool CPDF_Number::IsNumber() const { - return true; -} - -CPDF_Number* CPDF_Number::AsNumber() { - return this; -} - -const CPDF_Number* CPDF_Number::AsNumber() const { +CPDF_Number* CPDF_Number::AsMutableNumber() {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_number.cpp
30
31
32
33
34
35
36
37
38
39
} float CPDF_Number::GetNumber() const { return m_Number.GetFloat(); } int CPDF_Number::GetInteger() const { return m_Number.GetSigned(); }
+ show +
40
41
42
43
44
45
46
47
48
bool CPDF_Number::IsNumber() const { return true; } CPDF_Number* CPDF_Number::AsNumber() { return this; } const CPDF_Number* CPDF_Number::AsNumber() const {
+ show +
49
50
51
52
53
54
55
56
57
58
return this; } void CPDF_Number::SetString(const ByteString& str) { m_Number = FX_Number(str.AsStringView()); } ByteString CPDF_Number::GetString() const { return m_Number.IsInteger() ? ByteString::FormatInteger(m_Number.GetSigned()) : ByteString::FormatFloat(m_Number.GetFloat());

[CVE-2023-40093_1.diff] cpdf_boolean.cpp #3
-bool CPDF_Boolean::IsBoolean() const { - return true; -} - -CPDF_Boolean* CPDF_Boolean::AsBoolean() { - return this; -} - -const CPDF_Boolean* CPDF_Boolean::AsBoolean() const { +CPDF_Boolean* CPDF_Boolean::AsMutableBoolean() {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_boolean.cpp
28
29
30
31
32
33
34
35
36
37
} int CPDF_Boolean::GetInteger() const { return m_bValue; } void CPDF_Boolean::SetString(const ByteString& str) { m_bValue = (str == "true"); }
+ show +
38
39
40
41
42
43
44
45
46
bool CPDF_Boolean::IsBoolean() const { return true; } CPDF_Boolean* CPDF_Boolean::AsBoolean() { return this; } const CPDF_Boolean* CPDF_Boolean::AsBoolean() const {
+ show +
47
48
49
50
51
52
53
54
return this; } bool CPDF_Boolean::WriteTo(IFX_ArchiveStream* archive, const CPDF_Encryptor* encryptor) const { return archive->WriteString(" ") && archive->WriteString(GetString().AsStringView()); }

[CVE-2023-40093_1.diff] cpdf_data_avail.cpp #4
-CPDF_DataAvail::FileAvail::~FileAvail() {} +CPDF_DataAvail::FileAvail::~FileAvail() = default; -CPDF_DataAvail::DownloadHints::~DownloadHints() {} +CPDF_DataAvail::DownloadHints::~DownloadHints() = default; -CPDF_DataAvail::CPDF_DataAvail( - FileAvail* pFileAvail, - const RetainPtr<IFX_SeekableReadStream>& pFileRead, - bool bSupportHintTable) - : m_pFileRead( - pdfium::MakeRetain<CPDF_ReadValidator>(pFileRead, pFileAvail)), - m_dwFileLen(m_pFileRead->GetSize()), - m_bSupportHintTable(bSupportHintTable) {} +CPDF_DataAvail::CPDF_DataAvail(FileAvail* pFileAvail, + RetainPtr<IFX_SeekableReadStream> pFileRead) + : m_pFileRead(pdfium::MakeRetain<CPDF_ReadValidator>(std::move(pFileRead), + pFileAvail)), + m_dwFileLen(m_pFileRead->GetSize()) {}
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_data_avail.cpp
64
65
66
67
68
69
70
71
72
73
} ~HintsScope() { validator_->SetDownloadHints(nullptr); } private: RetainPtr<CPDF_ReadValidator> validator_; }; } // namespace
+ show +
74
75
76
77
78
79
80
81
82
83
84
85
CPDF_DataAvail::FileAvail::~FileAvail() {} CPDF_DataAvail::DownloadHints::~DownloadHints() {} CPDF_DataAvail::CPDF_DataAvail( FileAvail* pFileAvail, const RetainPtr<IFX_SeekableReadStream>& pFileRead, bool bSupportHintTable) : m_pFileRead( pdfium::MakeRetain<CPDF_ReadValidator>(pFileRead, pFileAvail)), m_dwFileLen(m_pFileRead->GetSize()), m_bSupportHintTable(bSupportHintTable) {}
+ show +
86
87
88
89
90
91
92
93
94
95
CPDF_DataAvail::~CPDF_DataAvail() { m_pHintTables.reset(); if (m_pDocument) m_pDocument->RemoveObserver(this); } void CPDF_DataAvail::OnObservableDestroyed() { m_pDocument = nullptr; m_pFormAvail.reset();

[CVE-2023-40093_1.diff] cpdf_data_avail.cpp #11
- CPDF_Array* pArray = ToArray(pObj.Get()); - if (pArray) { - CPDF_ArrayLocker locker(pArray); - for (const auto& pArrayObj : locker) { - if (CPDF_Reference* pRef = ToReference(pArrayObj.Get())) - UnavailObjList.push_back(pRef->GetRefObjNum()); - } - } - if (!pObj->IsDictionary()) - continue; - ByteString type = pObj->GetDict()->GetStringFor("Type"); - if (type == "Pages") { - m_PagesArray.push_back(std::move(pObj)); - continue; + switch (pObj->GetType()) { + case CPDF_Object::kArray: { + CPDF_ArrayLocker locker(pObj->AsArray()); + for (const auto& pArrayObj : locker) { + const CPDF_Reference* pRef = ToReference(pArrayObj.Get()); + if (pRef) + UnavailObjList.push_back(pRef->GetRefObjNum()); + } + break; + } + case CPDF_Object::kDictionary: + if (pObj->GetDict()->GetNameFor("Type") == "Pages") + m_PagesArray.push_back(std::move(pObj)); + break; + default: + break;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_data_avail.cpp
298
299
300
301
302
303
304
305
306
307
bool CPDF_DataAvail::CheckPage() { std::vector<uint32_t> UnavailObjList; for (uint32_t dwPageObjNum : m_PageObjList) { bool bExists = false; RetainPtr<CPDF_Object> pObj = GetObject(dwPageObjNum, &bExists); if (!pObj) { if (bExists) UnavailObjList.push_back(dwPageObjNum); continue; }
+ show +
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
CPDF_Array* pArray = ToArray(pObj.Get()); if (pArray) { CPDF_ArrayLocker locker(pArray); for (const auto& pArrayObj : locker) { if (CPDF_Reference* pRef = ToReference(pArrayObj.Get())) UnavailObjList.push_back(pRef->GetRefObjNum()); } } if (!pObj->IsDictionary()) continue; ByteString type = pObj->GetDict()->GetStringFor("Type"); if (type == "Pages") { m_PagesArray.push_back(std::move(pObj)); continue;
+ show +
323
324
325
326
327
328
329
330
331
332
} } m_PageObjList.clear(); if (!UnavailObjList.empty()) { m_PageObjList = std::move(UnavailObjList); return false; } size_t iPages = m_PagesArray.size(); for (size_t i = 0; i < iPages; ++i) { RetainPtr<CPDF_Object> pPages = std::move(m_PagesArray[i]);

[CVE-2023-40093_1.diff] cpdf_hint_tables.cpp #5
- CPDF_LinearizedHeader* pLinearized) - : m_pValidator(pValidator), - m_pLinearized(pLinearized), - m_nFirstPageSharedObjs(0), - m_szFirstPageObjOffset(0) { - ASSERT(m_pLinearized); + const CPDF_LinearizedHeader* pLinearized) + : m_pValidator(pValidator), m_pLinearized(pLinearized) { + DCHECK(m_pLinearized); -CPDF_HintTables::~CPDF_HintTables() {} +CPDF_HintTables::~CPDF_HintTables() = default;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_hint_tables.cpp
69
70
71
72
73
74
75
76
77
78
auto pHintTables = pdfium::MakeUnique<CPDF_HintTables>( parser->GetValidator().Get(), pLinearized); if (!pHintTables->LoadHintStream(hints_stream.Get())) return nullptr; return pHintTables; } CPDF_HintTables::CPDF_HintTables(CPDF_ReadValidator* pValidator,
+ show +
79
80
81
82
83
84
85
86
87
CPDF_LinearizedHeader* pLinearized) : m_pValidator(pValidator), m_pLinearized(pLinearized), m_nFirstPageSharedObjs(0), m_szFirstPageObjOffset(0) { ASSERT(m_pLinearized); } CPDF_HintTables::~CPDF_HintTables() {}
+ show +
88
89
90
91
92
93
94
95
96
97
bool CPDF_HintTables::ReadPageHintTable(CFX_BitStream* hStream) { const uint32_t nPages = m_pLinearized->GetPageCount(); if (nPages < 1 || nPages >= CPDF_Document::kPageMaxNum) return false; const uint32_t nFirstPageNum = m_pLinearized->GetFirstPageNo(); if (nFirstPageNum >= nPages) return false;

[CVE-2023-40093_1.diff] cpdf_parser.cpp #36
- m_CrossRefTable->SetTrailer(std::move(trailer)); - int32_t xrefsize = GetDirectInteger(GetTrailer(), "Size"); - if (xrefsize > 0) - ShrinkObjectMap(xrefsize); + m_CrossRefTable->SetTrailer(std::move(trailer), kNoV4TrailerObjectNumber); + const int32_t xrefsize = GetTrailer()->GetDirectIntegerFor("Size"); + if (xrefsize > 0) { + // Check if `xrefsize` is correct. If it is incorrect, give up and rebuild + // the xref table. + const uint32_t expected_last_obj_num = xrefsize - 1; + if (GetLastObjNum() != expected_last_obj_num && !RebuildCrossRef()) { + return FORMAT_ERROR; + } + }
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_parser.cpp
984
985
986
987
988
989
990
991
992
993
return FORMAT_ERROR; m_bXRefTableRebuilt = true; m_LastXRefOffset = 0; } if (bLoadV4) { RetainPtr<CPDF_Dictionary> trailer = LoadTrailerV4(); if (!trailer) return SUCCESS;
+ show +
994
995
996
997
m_CrossRefTable->SetTrailer(std::move(trailer)); int32_t xrefsize = GetDirectInteger(GetTrailer(), "Size"); if (xrefsize > 0) ShrinkObjectMap(xrefsize);
+ show +
998
999
1000
1001
1002
1003
1004
1005
1006
1007
} Error eRet = SetEncryptHandler(); if (eRet != SUCCESS) return eRet; if (!GetRoot() || !m_pObjectsHolder->TryInit()) { if (m_bXRefTableRebuilt) return FORMAT_ERROR;

[CVE-2023-40093_1.diff] cpdf_string.cpp #4
-bool CPDF_String::IsString() const { - return true; -} - -CPDF_String* CPDF_String::AsString() { - return this; -} - -const CPDF_String* CPDF_String::AsString() const { +CPDF_String* CPDF_String::AsMutableString() {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_string.cpp
44
45
46
47
48
49
50
51
52
53
} ByteString CPDF_String::GetString() const { return m_String; } void CPDF_String::SetString(const ByteString& str) { m_String = str; }
+ show +
54
55
56
57
58
59
60
61
62
bool CPDF_String::IsString() const { return true; } CPDF_String* CPDF_String::AsString() { return this; } const CPDF_String* CPDF_String::AsString() const {
+ show +
63
64
65
66
67
68
69
70
71
72
return this; } WideString CPDF_String::GetUnicodeText() const { return PDF_DecodeText(m_String.raw_span()); } bool CPDF_String::WriteTo(IFX_ArchiveStream* archive, const CPDF_Encryptor* encryptor) const { std::vector<uint8_t> encrypted_data;

[CVE-2023-40093_1.diff] cpdf_array.cpp #4
-bool CPDF_Array::IsArray() const { - return true; -} - -CPDF_Array* CPDF_Array::AsArray() { - return this; -} - -const CPDF_Array* CPDF_Array::AsArray() const { +CPDF_Array* CPDF_Array::AsMutableArray() {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_array.cpp
30
31
32
33
34
35
36
37
38
39
for (auto& it : m_Objects) { if (it && it->GetObjNum() == kInvalidObjNum) it.Leak(); } } CPDF_Object::Type CPDF_Array::GetType() const { return kArray; }
+ show +
40
41
42
43
44
45
46
47
48
bool CPDF_Array::IsArray() const { return true; } CPDF_Array* CPDF_Array::AsArray() { return this; } const CPDF_Array* CPDF_Array::AsArray() const {
+ show +
49
50
51
52
53
54
55
56
57
58
return this; } RetainPtr<CPDF_Object> CPDF_Array::Clone() const { return CloneObjectNonCyclic(false); } RetainPtr<CPDF_Object> CPDF_Array::CloneNonCyclic( bool bDirect, std::set<const CPDF_Object*>* pVisited) const {

[CVE-2023-40093_1.diff] cpdf_array.cpp #6
- rect.left = GetNumberAt(0); - rect.bottom = GetNumberAt(1); - rect.right = GetNumberAt(2); - rect.top = GetNumberAt(3); + rect.left = GetFloatAt(0); + rect.bottom = GetFloatAt(1); + rect.right = GetFloatAt(2); + rect.top = GetFloatAt(3);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_array.cpp
66
67
68
69
70
71
72
73
74
75
} } return pCopy; } CFX_FloatRect CPDF_Array::GetRect() const { CFX_FloatRect rect; if (m_Objects.size() != 4) return rect;
+ show +
76
77
78
79
rect.left = GetNumberAt(0); rect.bottom = GetNumberAt(1); rect.right = GetNumberAt(2); rect.top = GetNumberAt(3);
+ show +
80
81
82
83
84
85
86
87
88
89
return rect; } CFX_Matrix CPDF_Array::GetMatrix() const { if (m_Objects.size() != 6) return CFX_Matrix(); return CFX_Matrix(GetNumberAt(0), GetNumberAt(1), GetNumberAt(2), GetNumberAt(3), GetNumberAt(4), GetNumberAt(5)); }

[CVE-2023-40093_1.diff] cpdf_array.cpp #7
- return CFX_Matrix(GetNumberAt(0), GetNumberAt(1), GetNumberAt(2), - GetNumberAt(3), GetNumberAt(4), GetNumberAt(5)); + return CFX_Matrix(GetFloatAt(0), GetFloatAt(1), GetFloatAt(2), GetFloatAt(3), + GetFloatAt(4), GetFloatAt(5)); -CPDF_Object* CPDF_Array::GetObjectAt(size_t index) { - if (index >= m_Objects.size()) - return nullptr; - return m_Objects[index].Get(); +absl::optional<size_t> CPDF_Array::Find(const CPDF_Object* pThat) const { + for (size_t i = 0; i < size(); ++i) { + if (GetDirectObjectAt(i) == pThat) + return i; + } + return absl::nullopt; -const CPDF_Object* CPDF_Array::GetObjectAt(size_t index) const { - if (index >= m_Objects.size()) - return nullptr; - return m_Objects[index].Get(); +bool CPDF_Array::Contains(const CPDF_Object* pThat) const { + return Find(pThat).has_value(); -CPDF_Object* CPDF_Array::GetDirectObjectAt(size_t index) { - if (index >= m_Objects.size()) - return nullptr; - return m_Objects[index]->GetDirect(); +CPDF_Object* CPDF_Array::GetMutableObjectAtInternal(size_t index) { + return index < m_Objects.size() ? m_Objects[index].Get() : nullptr; -const CPDF_Object* CPDF_Array::GetDirectObjectAt(size_t index) const { - if (index >= m_Objects.size()) - return nullptr; - return m_Objects[index]->GetDirect(); +const CPDF_Object* CPDF_Array::GetObjectAtInternal(size_t index) const { + return const_cast<CPDF_Array*>(this)->GetMutableObjectAtInternal(index); -ByteString CPDF_Array::GetStringAt(size_t index) const { +RetainPtr<CPDF_Object> CPDF_Array::GetMutableObjectAt(size_t index) { + return pdfium::WrapRetain(GetMutableObjectAtInternal(index)); +} + +RetainPtr<const CPDF_Object> CPDF_Array::GetObjectAt(size_t index) const { + return pdfium::WrapRetain(GetObjectAtInternal(index)); +} + +RetainPtr<const CPDF_Object> CPDF_Array::GetDirectObjectAt(size_t index) const { + return const_cast<CPDF_Array*>(this)->GetMutableDirectObjectAt(index); +} + +RetainPtr<CPDF_Object> CPDF_Array::GetMutableDirectObjectAt(size_t index) { + RetainPtr<CPDF_Object> pObj = GetMutableObjectAt(index); + return pObj ? pObj->GetMutableDirect() : nullptr; +} + +ByteString CPDF_Array::GetByteStringAt(size_t index) const {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_array.cpp
77
78
79
80
81
82
83
84
85
86
rect.bottom = GetNumberAt(1); rect.right = GetNumberAt(2); rect.top = GetNumberAt(3); return rect; } CFX_Matrix CPDF_Array::GetMatrix() const { if (m_Objects.size() != 6) return CFX_Matrix();
+ show +
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
return CFX_Matrix(GetNumberAt(0), GetNumberAt(1), GetNumberAt(2), GetNumberAt(3), GetNumberAt(4), GetNumberAt(5)); } CPDF_Object* CPDF_Array::GetObjectAt(size_t index) { if (index >= m_Objects.size()) return nullptr; return m_Objects[index].Get(); } const CPDF_Object* CPDF_Array::GetObjectAt(size_t index) const { if (index >= m_Objects.size()) return nullptr; return m_Objects[index].Get(); } CPDF_Object* CPDF_Array::GetDirectObjectAt(size_t index) { if (index >= m_Objects.size()) return nullptr; return m_Objects[index]->GetDirect(); } const CPDF_Object* CPDF_Array::GetDirectObjectAt(size_t index) const { if (index >= m_Objects.size()) return nullptr; return m_Objects[index]->GetDirect(); } ByteString CPDF_Array::GetStringAt(size_t index) const {
+ show +
116
117
118
119
120
121
122
123
124
125
if (index >= m_Objects.size()) return ByteString(); return m_Objects[index]->GetString(); } WideString CPDF_Array::GetUnicodeTextAt(size_t index) const { if (index >= m_Objects.size()) return WideString(); return m_Objects[index]->GetUnicodeText(); }

[CVE-2023-40093_1.diff] cpdf_dictionary.cpp #4
-CPDF_Dictionary* CPDF_Dictionary::GetDict() { - return this; -} - -const CPDF_Dictionary* CPDF_Dictionary::GetDict() const { - return this; -} - -bool CPDF_Dictionary::IsDictionary() const { - return true; -} - -CPDF_Dictionary* CPDF_Dictionary::AsDictionary() { - return this; -} - -const CPDF_Dictionary* CPDF_Dictionary::AsDictionary() const { +CPDF_Dictionary* CPDF_Dictionary::AsMutableDictionary() {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_dictionary.cpp
36
37
38
39
40
41
42
43
44
45
for (auto& it : m_Map) { if (it.second && it.second->GetObjNum() == kInvalidObjNum) it.second.Leak(); } } CPDF_Object::Type CPDF_Dictionary::GetType() const { return kDictionary; }
+ show +
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
CPDF_Dictionary* CPDF_Dictionary::GetDict() { return this; } const CPDF_Dictionary* CPDF_Dictionary::GetDict() const { return this; } bool CPDF_Dictionary::IsDictionary() const { return true; } CPDF_Dictionary* CPDF_Dictionary::AsDictionary() { return this; } const CPDF_Dictionary* CPDF_Dictionary::AsDictionary() const {
+ show +
63
64
65
66
67
68
69
70
71
72
return this; } RetainPtr<CPDF_Object> CPDF_Dictionary::Clone() const { return CloneObjectNonCyclic(false); } RetainPtr<CPDF_Object> CPDF_Dictionary::CloneNonCyclic( bool bDirect, std::set<const CPDF_Object*>* pVisited) const {

[CVE-2023-40093_1.diff] cpdf_stream_acc.h #2
+#include <stdint.h> + -#include "core/fxcrt/fx_memory_wrappers.h" -#include "core/fxcrt/fx_string.h" -#include "core/fxcrt/fx_system.h" -#include "core/fxcrt/maybe_owned.h" +#include "core/fxcrt/bytestring.h" +#include "core/fxcrt/data_vector.h" +#include "third_party/abseil-cpp/absl/types/variant.h"
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_stream_acc.h
2
3
4
5
6
7
8
9
10
11
// Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef CORE_FPDFAPI_PARSER_CPDF_STREAM_ACC_H_ #define CORE_FPDFAPI_PARSER_CPDF_STREAM_ACC_H_ #include <memory>
+ show +
12
13
14
15
#include "core/fxcrt/fx_memory_wrappers.h" #include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" #include "core/fxcrt/maybe_owned.h"
+ show +
16
17
18
19
20
21
22
23
24
25
#include "core/fxcrt/retain_ptr.h" #include "third_party/base/span.h" class CPDF_Dictionary; class CPDF_Stream; class CPDF_StreamAcc final : public Retainable { public: template <typename T, typename... Args> friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);

[CVE-2023-40093_1.diff] cpdf_name.cpp #4
-bool CPDF_Name::IsName() const { - return true; -} - -CPDF_Name* CPDF_Name::AsName() { - return this; -} - -const CPDF_Name* CPDF_Name::AsName() const { +CPDF_Name* CPDF_Name::AsMutableName() {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_name.cpp
28
29
30
31
32
33
34
35
36
37
} ByteString CPDF_Name::GetString() const { return m_Name; } void CPDF_Name::SetString(const ByteString& str) { m_Name = str; }
+ show +
38
39
40
41
42
43
44
45
46
bool CPDF_Name::IsName() const { return true; } CPDF_Name* CPDF_Name::AsName() { return this; } const CPDF_Name* CPDF_Name::AsName() const {
+ show +
47
48
49
50
51
52
53
54
55
56
return this; } WideString CPDF_Name::GetUnicodeText() const { return PDF_DecodeText(m_Name.raw_span()); } bool CPDF_Name::WriteTo(IFX_ArchiveStream* archive, const CPDF_Encryptor* encryptor) const { return archive->WriteString("/") &&

[CVE-2023-40093_1.diff] cpdf_object_walker.h #6
- explicit CPDF_NonConstObjectWalker(CPDF_Object* root) - : CPDF_ObjectWalker(root) {} - - CPDF_Object* GetNext() { - return const_cast<CPDF_Object*>(CPDF_ObjectWalker::GetNext()); - } + explicit CPDF_NonConstObjectWalker(RetainPtr<CPDF_Object> root); + RetainPtr<CPDF_Object> GetNext();
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_object_walker.h
52
53
54
55
56
57
58
59
60
61
RetainPtr<const CPDF_Object> next_object_; RetainPtr<const CPDF_Object> parent_object_; ByteString dict_key_; size_t current_depth_ = 0; std::stack<std::unique_ptr<SubobjectIterator>> stack_; }; class CPDF_NonConstObjectWalker final : public CPDF_ObjectWalker { public:
+ show +
62
63
64
65
66
explicit CPDF_NonConstObjectWalker(CPDF_Object* root) : CPDF_ObjectWalker(root) {} CPDF_Object* GetNext() { return const_cast<CPDF_Object*>(CPDF_ObjectWalker::GetNext());
+ show +
67
68
69
70
} }; #endif // CORE_FPDFAPI_PARSER_CPDF_OBJECT_WALKER_H_

[CVE-2023-40093_1.diff] cpdf_reference.cpp #3
- if (bDirect) { - auto* pDirect = GetDirect(); - return pDirect && !pdfium::ContainsKey(*pVisited, pDirect) - ? pDirect->CloneNonCyclic(true, pVisited) - : nullptr; + if (!bDirect) { + return pdfium::MakeRetain<CPDF_Reference>(m_pObjList, m_RefObjNum); - return pdfium::MakeRetain<CPDF_Reference>(m_pObjList.Get(), m_RefObjNum); + RetainPtr<const CPDF_Object> pDirect = GetDirect(); + return pDirect && !pdfium::Contains(*pVisited, pDirect.Get()) + ? pDirect->CloneNonCyclic(true, pVisited) + : nullptr; -CPDF_Object* CPDF_Reference::SafeGetDirect() { - CPDF_Object* obj = GetDirect(); - return (obj && !obj->IsReference()) ? obj : nullptr; -} - -const CPDF_Object* CPDF_Reference::SafeGetDirect() const { - const CPDF_Object* obj = GetDirect(); +const CPDF_Object* CPDF_Reference::FastGetDirect() const { + if (!m_pObjList) + return nullptr; + const CPDF_Object* obj = + m_pObjList->GetOrParseIndirectObjectInternal(m_RefObjNum);
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_reference.cpp
58
59
60
61
62
63
64
65
66
67
} RetainPtr<CPDF_Object> CPDF_Reference::Clone() const { return CloneObjectNonCyclic(false); } RetainPtr<CPDF_Object> CPDF_Reference::CloneNonCyclic( bool bDirect, std::set<const CPDF_Object*>* pVisited) const { pVisited->insert(this);
+ show +
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
if (bDirect) { auto* pDirect = GetDirect(); return pDirect && !pdfium::ContainsKey(*pVisited, pDirect) ? pDirect->CloneNonCyclic(true, pVisited) : nullptr; } return pdfium::MakeRetain<CPDF_Reference>(m_pObjList.Get(), m_RefObjNum); } CPDF_Object* CPDF_Reference::SafeGetDirect() { CPDF_Object* obj = GetDirect(); return (obj && !obj->IsReference()) ? obj : nullptr; } const CPDF_Object* CPDF_Reference::SafeGetDirect() const { const CPDF_Object* obj = GetDirect();
+ show +
84
85
86
87
88
89
90
91
92
93
return (obj && !obj->IsReference()) ? obj : nullptr; } void CPDF_Reference::SetRef(CPDF_IndirectObjectHolder* pDoc, uint32_t objnum) { m_pObjList = pDoc; m_RefObjNum = objnum; } CPDF_Object* CPDF_Reference::GetDirect() { return m_pObjList ? m_pObjList->GetOrParseIndirectObject(m_RefObjNum)

[CVE-2023-40093_1.diff] cpdf_reference.cpp #4
-CPDF_Object* CPDF_Reference::GetDirect() { - return m_pObjList ? m_pObjList->GetOrParseIndirectObject(m_RefObjNum) - : nullptr; -} - -const CPDF_Object* CPDF_Reference::GetDirect() const { - return m_pObjList ? m_pObjList->GetOrParseIndirectObject(m_RefObjNum) +const CPDF_Object* CPDF_Reference::GetDirectInternal() const { + return m_pObjList ? m_pObjList->GetOrParseIndirectObjectInternal(m_RefObjNum)
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/parser/cpdf_reference.cpp
82
83
84
85
86
87
88
89
90
91
const CPDF_Object* CPDF_Reference::SafeGetDirect() const { const CPDF_Object* obj = GetDirect(); return (obj && !obj->IsReference()) ? obj : nullptr; } void CPDF_Reference::SetRef(CPDF_IndirectObjectHolder* pDoc, uint32_t objnum) { m_pObjList = pDoc; m_RefObjNum = objnum; }
+ show +
92
93
94
95
96
97
98
CPDF_Object* CPDF_Reference::GetDirect() { return m_pObjList ? m_pObjList->GetOrParseIndirectObject(m_RefObjNum) : nullptr; } const CPDF_Object* CPDF_Reference::GetDirect() const { return m_pObjList ? m_pObjList->GetOrParseIndirectObject(m_RefObjNum)
+ show +
99
100
101
102
103
104
105
106
107
108
: nullptr; } bool CPDF_Reference::WriteTo(IFX_ArchiveStream* archive, const CPDF_Encryptor* encryptor) const { return archive->WriteString(" ") && archive->WriteDWord(GetRefObjNum()) && archive->WriteString(" 0 R "); } RetainPtr<CPDF_Object> CPDF_Reference::MakeReference(

[CVE-2023-40093_1.diff] cpdf_creator_embeddertest.cpp #1
-// Copyright 2017 PDFium Authors. All rights reserved. +// Copyright 2017 The PDFium Authors -#include <cstring> -#include <memory> -#include <string> -#include <vector> +#include <string.h> -#include "core/fxcrt/fx_system.h" +#include <string> +
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp
1
2
3
4
// Copyright 2017 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file.
+ show +
5
6
7
8
9
10
#include <cstring> #include <memory> #include <string> #include <vector> #include "core/fxcrt/fx_system.h"
+ show +
11
12
13
14
15
16
17
18
19
20
#include "public/cpp/fpdf_scopers.h" #include "public/fpdf_annot.h" #include "public/fpdf_edit.h" #include "public/fpdfview.h" #include "testing/embedder_test.h" #include "testing/fake_file_access.h" #include "testing/gmock/include/gmock/gmock-matchers.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/utils/file_util.h"

[CVE-2023-40093_1.diff] cpdf_creator.cpp #6
-bool CFX_FileBufferArchive::WriteByte(uint8_t byte) { - return WriteBlock(&byte, 1); -} - -bool CFX_FileBufferArchive::WriteDWord(uint32_t i) { - char buf[32]; - FXSYS_itoa(i, buf, 10); - return WriteBlock(buf, strlen(buf)); -} - -bool CFX_FileBufferArchive::WriteString(ByteStringView str) { - return WriteBlock(str.raw_str(), str.GetLength()); -} -
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/edit/cpdf_creator.cpp
96
97
98
99
100
101
102
103
104
105
FX_SAFE_FILESIZE safe_offset = offset_; safe_offset += size; if (!safe_offset.IsValid()) return false; offset_ = safe_offset.ValueOrDie(); return true; }
+ show +
106
107
108
109
110
111
112
113
114
115
116
117
bool CFX_FileBufferArchive::WriteByte(uint8_t byte) { return WriteBlock(&byte, 1); } bool CFX_FileBufferArchive::WriteDWord(uint32_t i) { char buf[32]; FXSYS_itoa(i, buf, 10); return WriteBlock(buf, strlen(buf)); } bool CFX_FileBufferArchive::WriteString(ByteStringView str) { return WriteBlock(str.raw_str(), str.GetLength());
+ show +
118
119
120
121
122
123
124
125
126
127
} ByteString GenerateFileID(uint32_t dwSeed1, uint32_t dwSeed2) { uint32_t buffer[4]; void* pContext1 = FX_Random_MT_Start(dwSeed1); void* pContext2 = FX_Random_MT_Start(dwSeed2); buffer[0] = FX_Random_MT_Generate(pContext1); buffer[1] = FX_Random_MT_Generate(pContext1); buffer[2] = FX_Random_MT_Generate(pContext2); buffer[3] = FX_Random_MT_Generate(pContext2);

[CVE-2023-40093_1.diff] cpdf_creator.cpp #21
- if (!m_Archive->WriteString("/Prev ")) - return Stage::kInvalid; - - char offset_buf[20]; - memset(offset_buf, 0, sizeof(offset_buf)); - FXSYS_i64toa(prev, offset_buf, 10); - if (!m_Archive->WriteBlock(offset_buf, strlen(offset_buf))) + if (!m_Archive->WriteString("/Prev ") || !m_Archive->WriteFilesize(prev))
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/edit/cpdf_creator.cpp
490
491
492
493
494
495
496
497
498
499
} } if (!m_Archive->WriteString("/Size ") || !m_Archive->WriteDWord(m_dwLastObjNum + (bXRefStream ? 2 : 1))) { return Stage::kInvalid; } if (m_IsIncremental) { FX_FILESIZE prev = m_pParser->GetLastXRefOffset(); if (prev) {
+ show +
500
501
502
503
504
505
506
if (!m_Archive->WriteString("/Prev ")) return Stage::kInvalid; char offset_buf[20]; memset(offset_buf, 0, sizeof(offset_buf)); FXSYS_i64toa(prev, offset_buf, 10); if (!m_Archive->WriteBlock(offset_buf, strlen(offset_buf)))
+ show +
507
508
509
510
511
512
513
514
515
516
return Stage::kInvalid; } } if (m_pIDArray) { if (!m_Archive->WriteString(("/ID")) || !m_pIDArray->WriteTo(m_Archive.get(), nullptr)) { return Stage::kInvalid; } } if (!bXRefStream) {

[CVE-2023-40093_1.diff] cpdf_creator.cpp #24
- if (!m_Archive->WriteString("\r\nstartxref\r\n")) - return Stage::kInvalid; - - char offset_buf[20]; - memset(offset_buf, 0, sizeof(offset_buf)); - FXSYS_i64toa(m_XrefStart, offset_buf, 10); - if (!m_Archive->WriteBlock(offset_buf, strlen(offset_buf)) || + if (!m_Archive->WriteString("\r\nstartxref\r\n") || + !m_Archive->WriteFilesize(m_XrefStart) ||
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfapi/edit/cpdf_creator.cpp
555
556
557
558
559
560
561
562
563
564
} for (i = 0; i < count; ++i) { if (!OutputIndex(m_Archive.get(), m_ObjectOffsets[m_NewObjNumArray[i]])) return Stage::kInvalid; } } if (!m_Archive->WriteString("\r\nendstream")) return Stage::kInvalid; }
+ show +
565
566
567
568
569
570
571
if (!m_Archive->WriteString("\r\nstartxref\r\n")) return Stage::kInvalid; char offset_buf[20]; memset(offset_buf, 0, sizeof(offset_buf)); FXSYS_i64toa(m_XrefStart, offset_buf, 10); if (!m_Archive->WriteBlock(offset_buf, strlen(offset_buf)) ||
+ show +
572
573
574
575
576
577
578
579
580
581
!m_Archive->WriteString("\r\n%%EOF\r\n")) { return Stage::kInvalid; } m_iStage = Stage::kComplete100; return m_iStage; } bool CPDF_Creator::Create(uint32_t flags) { m_IsIncremental = !!(flags & FPDFCREATE_INCREMENTAL);

[CVE-2023-40093_1.diff] retain_ptr.h #4
- RetainPtr& operator=(const RetainPtr& that) { - if (*this != that) - Reset(that.Get()); - return *this; - } - - // Move-assign a RetainPtr. After assignment, |that| will be NULL. - RetainPtr& operator=(RetainPtr&& that) { - m_pObj.reset(that.Leak()); - return *this; - } - - // Assigment from raw pointers is intentially not provided to make - // reference count churn more visible where possible. -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/retain_ptr.h
54
55
56
57
58
59
60
61
62
63
} T* Get() const { return m_pObj.get(); } UnownedPtr<T> BackPointer() const { return UnownedPtr<T>(Get()); } void Swap(RetainPtr& that) { m_pObj.swap(that.m_pObj); } // Useful for passing notion of object ownership across a C API. T* Leak() { return m_pObj.release(); } void Unleak(T* ptr) { m_pObj.reset(ptr); }
+ show +
64
65
66
67
68
69
70
71
72
73
RetainPtr& operator=(const RetainPtr& that) { if (*this != that) Reset(that.Get()); return *this; } // Move-assign a RetainPtr. After assignment, |that| will be NULL. RetainPtr& operator=(RetainPtr&& that) { m_pObj.reset(that.Leak()); return *this;
+ show +
74
75
76
77
78
79
80
81
82
83
} // Assigment from raw pointers is intentially not provided to make // reference count churn more visible where possible. bool operator==(const RetainPtr& that) const { return Get() == that.Get(); } bool operator!=(const RetainPtr& that) const { return !(*this == that); } template <typename U> bool operator==(const U& that) const {

[CVE-2023-40093_1.diff] bytestring.cpp #6
-ByteString::ByteString(const std::ostringstream& outStream) { - std::string str = outStream.str(); - if (str.length() > 0) - m_pData.Reset(StringData::Create(str.c_str(), str.length())); +ByteString::ByteString(const fxcrt::ostringstream& outStream) { + auto str = outStream.str(); + if (!str.empty()) + m_pData.Reset(StringData::Create(str.c_str(), str.size())); -ByteString::~ByteString() {} +ByteString::~ByteString() = default; + +void ByteString::clear() { + if (m_pData && m_pData->CanOperateInPlace(0)) { + m_pData->m_nDataLength = 0; + return; + } + m_pData.Reset(); +}
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/bytestring.cpp
175
176
177
178
179
180
181
182
183
184
m_pData.Reset(StringData::Create(nNewLen)); size_t nOffset = 0; for (const auto& item : list) { m_pData->CopyContentsAt(nOffset, item.unterminated_c_str(), item.GetLength()); nOffset += item.GetLength(); } }
+ show +
185
186
187
188
189
190
191
ByteString::ByteString(const std::ostringstream& outStream) { std::string str = outStream.str(); if (str.length() > 0) m_pData.Reset(StringData::Create(str.c_str(), str.length())); } ByteString::~ByteString() {}
+ show +
192
193
194
195
196
197
198
199
200
201
ByteString& ByteString::operator=(const char* str) { if (!str || !str[0]) clear(); else AssignCopy(str, strlen(str)); return *this; }

[CVE-2023-40093_1.diff] fx_memory_unittest.cpp #2
-const size_t kMaxByteAlloc = std::numeric_limits<size_t>::max(); -const size_t kMaxIntAlloc = kMaxByteAlloc / sizeof(int); -const size_t kOverflowIntAlloc = kMaxIntAlloc + 100; -const size_t kWidth = 640; -const size_t kOverflowIntAlloc2D = kMaxIntAlloc / kWidth + 10; +constexpr size_t kMaxByteAlloc = std::numeric_limits<size_t>::max(); +constexpr size_t kMaxIntAlloc = kMaxByteAlloc / sizeof(int); +constexpr size_t kOverflowIntAlloc = kMaxIntAlloc + 100; +constexpr size_t kWidth = 640; +constexpr size_t kOverflowIntAlloc2D = kMaxIntAlloc / kWidth + 10; +constexpr size_t kCloseToMaxIntAlloc = kMaxIntAlloc - 100; +constexpr size_t kCloseToMaxByteAlloc = kMaxByteAlloc - 100;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_memory_unittest.cpp
4
5
6
7
8
9
10
11
12
13
#include "core/fxcrt/fx_memory.h" #include <limits> #include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace {
+ show +
14
15
16
17
18
const size_t kMaxByteAlloc = std::numeric_limits<size_t>::max(); const size_t kMaxIntAlloc = kMaxByteAlloc / sizeof(int); const size_t kOverflowIntAlloc = kMaxIntAlloc + 100; const size_t kWidth = 640; const size_t kOverflowIntAlloc2D = kMaxIntAlloc / kWidth + 10;
+ show +
19
20
21
22
23
24
25
26
27
28
} // namespace TEST(fxcrt, FX_AllocZero) { uint8_t* ptr = FX_Alloc(uint8_t, 0); uint8_t* ptr2 = FX_Alloc(uint8_t, 0); EXPECT_TRUE(ptr); // Malloc(0) is distinguishable from OOM. EXPECT_NE(ptr, ptr2); // Each malloc(0) is distinguishable. FX_Free(ptr2); FX_Free(ptr);

[CVE-2023-40093_1.diff] byteorder_unittest.cpp #1
-// Copyright 2019 PDFium Authors. All rights reserved. +// Copyright 2019 The PDFium Authors +#include "core/fxcrt/fx_system.h" -// Original code to use as a reference implementation. - -#define FXWORD_GET_LSBFIRST(p) \ - (static_cast<uint16_t>((static_cast<uint16_t>(p[1]) << 8) | \ - (static_cast<uint16_t>(p[0])))) -#define FXWORD_GET_MSBFIRST(p) \ - (static_cast<uint16_t>((static_cast<uint16_t>(p[0]) << 8) | \ - (static_cast<uint16_t>(p[1])))) -#define FXDWORD_GET_LSBFIRST(p) \ - ((static_cast<uint32_t>(p[3]) << 24) | (static_cast<uint32_t>(p[2]) << 16) | \ - (static_cast<uint32_t>(p[1]) << 8) | (static_cast<uint32_t>(p[0]))) -#define FXDWORD_GET_MSBFIRST(p) \ - ((static_cast<uint32_t>(p[0]) << 24) | (static_cast<uint32_t>(p[1]) << 16) | \ - (static_cast<uint32_t>(p[2]) << 8) | (static_cast<uint32_t>(p[3]))) -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_system.h
163
164
165
166
167
168
169
170
171
172
int FXSYS_stricmp(const char* str1, const char* str2); int FXSYS_wcsicmp(const wchar_t* str1, const wchar_t* str2); wchar_t* FXSYS_wcslwr(wchar_t* str); wchar_t* FXSYS_wcsupr(wchar_t* str); #define FXSYS_pow(a, b) (float)pow(a, b) #define FXSYS_wcsftime wcsftime void FXSYS_SetLastError(uint32_t err); uint32_t FXSYS_GetLastError(); #endif // _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ show +
173
174
175
176
177
178
179
180
181
182
183
184
#define FXWORD_GET_LSBFIRST(p) \ (static_cast<uint16_t>((static_cast<uint16_t>(p[1]) << 8) | \ (static_cast<uint16_t>(p[0])))) #define FXWORD_GET_MSBFIRST(p) \ (static_cast<uint16_t>((static_cast<uint16_t>(p[0]) << 8) | \ (static_cast<uint16_t>(p[1])))) #define FXDWORD_GET_LSBFIRST(p) \ ((static_cast<uint32_t>(p[3]) << 24) | (static_cast<uint32_t>(p[2]) << 16) | \ (static_cast<uint32_t>(p[1]) << 8) | (static_cast<uint32_t>(p[0]))) #define FXDWORD_GET_MSBFIRST(p) \ ((static_cast<uint32_t>(p[0]) << 24) | (static_cast<uint32_t>(p[1]) << 16) | \ (static_cast<uint32_t>(p[2]) << 8) | (static_cast<uint32_t>(p[3])))
+ show +
185
186
187
188
189
190
191
192
193
194
int32_t FXSYS_atoi(const char* str); uint32_t FXSYS_atoui(const char* str); int32_t FXSYS_wtoi(const wchar_t* str); int64_t FXSYS_atoi64(const char* str); const char* FXSYS_i64toa(int64_t value, char* str, int radix); int FXSYS_roundf(float f); int FXSYS_round(double d); #define FXSYS_sqrt2(a, b) (float)sqrt((a) * (a) + (b) * (b)) #ifdef __cplusplus } // extern C
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/byteorder_unittest.cpp
3
4
5
6
7
8
9
10
11
12
// found in the LICENSE file. #include "core/fxcrt/byteorder.h" #include "testing/gtest/include/gtest/gtest.h" namespace { // Original code to use as a reference implementation.
+ show +
13
14
15
16
17
18
19
20
21
22
23
24
#define FXWORD_GET_LSBFIRST(p) \ (static_cast<uint16_t>((static_cast<uint16_t>(p[1]) << 8) | \ (static_cast<uint16_t>(p[0])))) #define FXWORD_GET_MSBFIRST(p) \ (static_cast<uint16_t>((static_cast<uint16_t>(p[0]) << 8) | \ (static_cast<uint16_t>(p[1])))) #define FXDWORD_GET_LSBFIRST(p) \ ((static_cast<uint32_t>(p[3]) << 24) | (static_cast<uint32_t>(p[2]) << 16) | \ (static_cast<uint32_t>(p[1]) << 8) | (static_cast<uint32_t>(p[0]))) #define FXDWORD_GET_MSBFIRST(p) \ ((static_cast<uint32_t>(p[0]) << 24) | (static_cast<uint32_t>(p[1]) << 16) | \ (static_cast<uint32_t>(p[2]) << 8) | (static_cast<uint32_t>(p[3])))
+ show +
25
26
27
28
29
30
31
32
33
34
constexpr uint32_t kTestValues32[] = { 0x0, 0x1, 0x2, 0x3, 0x4, 0xfe, 0xff, 0x100, 0x101, 0xffff, 0x10000, 0x123456, 0x345167, 0x2f3e4a5b, 0xff000000, 0xfffffffe, 0xffffffff}; } // namespace namespace fxcrt {

[CVE-2023-40093_1.diff] fx_system.h #3
-// _FX_PLATFORM_ values; -#define _FX_PLATFORM_WINDOWS_ 1 -#define _FX_PLATFORM_LINUX_ 2 -#define _FX_PLATFORM_APPLE_ 3 - -#if defined(_WIN32) -#define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_ -#elif defined(_WIN64) -#define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_ -#elif defined(__linux__) -#define _FX_PLATFORM_ _FX_PLATFORM_LINUX_ -#elif defined(__APPLE__) -#define _FX_PLATFORM_ _FX_PLATFORM_APPLE_ -#elif defined(__asmjs__) || defined(__wasm__) -#define _FX_PLATFORM_ _FX_PLATFORM_LINUX_ -#endif +#include "build/build_config.h" +#include "core/fxcrt/fx_types.h"
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_system.h
11
12
13
14
15
16
17
18
19
20
#include <math.h> #include <stdarg.h> #include <stddef.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <wchar.h> // _FX_PLATFORM_ values;
+ show +
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#define _FX_PLATFORM_WINDOWS_ 1 #define _FX_PLATFORM_LINUX_ 2 #define _FX_PLATFORM_APPLE_ 3 #if defined(_WIN32) #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_ #elif defined(_WIN64) #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_ #elif defined(__linux__) #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_ #elif defined(__APPLE__) #define _FX_PLATFORM_ _FX_PLATFORM_APPLE_ #elif defined(__asmjs__) || defined(__wasm__) #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_ #endif
+ show +
36
37
38
39
40
41
42
43
44
45
#if defined(_MSC_VER) && _MSC_VER < 1900 #error Sorry, VC++ 2015 or later is required to compile PDFium. #endif // defined(_MSC_VER) && _MSC_VER < 1900 #if defined(__wasm__) && defined(PDF_ENABLE_V8) #error Cannot compile v8 with wasm. #endif // PDF_ENABLE_V8 #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_

[CVE-2023-40093_1.diff] fx_number_unittest.cpp #2
- { - FX_Number number(""); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - FX_Number number("0"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - FX_Number number("10"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - FX_Number number("4294967295"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - // Value overflows. - FX_Number number("4223423494965252"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - // No explicit sign will allow the number to go negative if we retrieve - // it as a signed value. This is needed for things like the encryption - // Permissions flag (Table 3.20 PDF 1.7 spec) - FX_Number number("4294965252"); - EXPECT_EQ(-2044, number.GetSigned()); - } + struct TestCase { + const char* input; + int expected_output; + }; + + auto test_func = [](pdfium::span<const TestCase> test_cases) { + for (const auto& test : test_cases) { + FX_Number number(test.input); + EXPECT_TRUE(number.IsInteger()); + EXPECT_FALSE(number.IsSigned()); + EXPECT_EQ(test.expected_output, number.GetSigned()); + } + }; + + static constexpr TestCase kNormalCases[] = { + {"", 0}, + {"0", 0}, + {"10", 10}, + }; + test_func(kNormalCases); + + static constexpr TestCase kOverflowCases[] = { + {"4223423494965252", 0}, + {"4294967296", 0}, + {"4294967297", 0}, + {"5000000000", 0}, + }; + test_func(kOverflowCases); + + // No explicit sign will allow the number to go negative if retrieved as a + // signed value. This is needed for things like the encryption permissions + // flag (Table 3.20 PDF 1.7 spec) + static constexpr TestCase kNegativeCases[] = { + {"4294965252", -2044}, + {"4294967247", -49}, + {"4294967248", -48}, + {"4294967292", -4}, + {"4294967295", -1}, + }; + test_func(kNegativeCases);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_number_unittest.cpp
40
41
42
43
44
45
46
47
48
49
// Show that assignment works. FX_Number number2 = number; EXPECT_FALSE(number2.IsInteger()); EXPECT_TRUE(number2.IsSigned()); EXPECT_EQ(-100, number2.GetSigned()); EXPECT_FLOAT_EQ(-100.001f, number2.GetFloat()); } TEST(fxnumber, FromStringUnsigned) { {
+ show +
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
FX_Number number(""); EXPECT_TRUE(number.IsInteger()); EXPECT_FALSE(number.IsSigned()); } { FX_Number number("0"); EXPECT_TRUE(number.IsInteger()); EXPECT_FALSE(number.IsSigned()); } { FX_Number number("10"); EXPECT_TRUE(number.IsInteger()); EXPECT_FALSE(number.IsSigned()); } { FX_Number number("4294967295"); EXPECT_TRUE(number.IsInteger()); EXPECT_FALSE(number.IsSigned()); } { // Value overflows. FX_Number number("4223423494965252"); EXPECT_TRUE(number.IsInteger()); EXPECT_FALSE(number.IsSigned()); } { // No explicit sign will allow the number to go negative if we retrieve // it as a signed value. This is needed for things like the encryption // Permissions flag (Table 3.20 PDF 1.7 spec) FX_Number number("4294965252"); EXPECT_EQ(-2044, number.GetSigned());
+ show +
81
82
83
84
85
86
87
88
89
90
} } TEST(fxnumber, FromStringSigned) { { FX_Number number("-0"); EXPECT_TRUE(number.IsInteger()); EXPECT_TRUE(number.IsSigned()); EXPECT_EQ(0, number.GetSigned()); }

[CVE-2023-40093_1.diff] retain_ptr_unittest.cpp #4
+TEST(RetainPtr, CopyConversionCtor) { + PseudoRetainable obj; + { + RetainPtr<PseudoRetainable> ptr1(&obj); + { + RetainPtr<const PseudoRetainable> ptr2(ptr1); + EXPECT_EQ(2, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + EXPECT_EQ(2, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); + } + EXPECT_EQ(2, obj.retain_count()); + EXPECT_EQ(2, obj.release_count()); +} + +TEST(RetainPtr, MoveConversionCtor) { + PseudoRetainable obj; + { + RetainPtr<PseudoRetainable> ptr1(&obj); + { + RetainPtr<const PseudoRetainable> ptr2(std::move(ptr1)); + EXPECT_FALSE(ptr1.Get()); + EXPECT_EQ(&obj, ptr2.Get()); + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); +} + +TEST(RetainPtr, NullptrAssign) { + PseudoRetainable obj; + RetainPtr<PseudoRetainable> ptr(&obj); + ptr = nullptr; + EXPECT_FALSE(ptr); +} + +TEST(RetainPtr, RawAssign) { + PseudoRetainable obj; + RetainPtr<PseudoRetainable> ptr; + ptr = pdfium::WrapRetain(&obj); + EXPECT_EQ(&obj, ptr); +} + +TEST(RetainPtr, CopyAssign) { + PseudoRetainable obj; + { + RetainPtr<PseudoRetainable> ptr(&obj); + { + RetainPtr<PseudoRetainable> ptr2; + ptr2 = ptr; + EXPECT_EQ(2, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + { + // Test assignment from wrapped underlying type. + RetainPtr<PseudoRetainable> ptr2; + ptr2 = pdfium::WrapRetain(ptr.Get()); + EXPECT_EQ(3, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); + } + EXPECT_EQ(3, obj.retain_count()); + EXPECT_EQ(2, obj.release_count()); + } + EXPECT_EQ(3, obj.retain_count()); + EXPECT_EQ(3, obj.release_count()); +} + +TEST(RetainPtr, MoveAssign) { + PseudoRetainable obj; + { + RetainPtr<PseudoRetainable> ptr1(&obj); + { + RetainPtr<PseudoRetainable> ptr2; + EXPECT_EQ(&obj, ptr1.Get()); + EXPECT_FALSE(ptr2.Get()); + ptr2 = std::move(ptr1); + EXPECT_FALSE(ptr1.Get()); + EXPECT_EQ(&obj, ptr2.Get()); + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); +} + +TEST(RetainPtr, CopyConvertAssign) { + PseudoRetainable obj; + { + RetainPtr<PseudoRetainable> ptr(&obj); + { + RetainPtr<const PseudoRetainable> ptr2; + ptr2 = ptr; + EXPECT_EQ(2, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + { + // Test assignment from wrapped underlying type. + RetainPtr<const PseudoRetainable> ptr2; + ptr2 = pdfium::WrapRetain(ptr.Get()); + EXPECT_EQ(3, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); + } + EXPECT_EQ(3, obj.retain_count()); + EXPECT_EQ(2, obj.release_count()); + } + EXPECT_EQ(3, obj.retain_count()); + EXPECT_EQ(3, obj.release_count()); +} + +TEST(RetainPtr, MoveConvertAssign) { + PseudoRetainable obj; + { + RetainPtr<PseudoRetainable> ptr1(&obj); + { + RetainPtr<const PseudoRetainable> ptr2; + ptr2 = std::move(ptr1); + EXPECT_FALSE(ptr1); + EXPECT_EQ(&obj, ptr2.Get()); + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); +} + +TEST(RetainPtr, AmbiguousExpression) { + class A : public Retainable {}; + class B : public A {}; + + // Test passes if it compiles without error. + RetainPtr<A> var = (0) ? pdfium::MakeRetain<A>() : pdfium::MakeRetain<B>(); + EXPECT_TRUE(var); +} + -TEST(RetainPtr, Assign) { - PseudoRetainable obj; - { - RetainPtr<PseudoRetainable> ptr(&obj); - { - RetainPtr<PseudoRetainable> ptr2; - ptr2 = ptr; - EXPECT_EQ(2, obj.retain_count()); - EXPECT_EQ(0, obj.release_count()); - } - EXPECT_EQ(2, obj.retain_count()); - EXPECT_EQ(1, obj.release_count()); - } - EXPECT_EQ(2, obj.retain_count()); - EXPECT_EQ(2, obj.release_count()); -} - -TEST(RetainPtr, MoveAssign) { - PseudoRetainable obj; - { - RetainPtr<PseudoRetainable> ptr1(&obj); - { - RetainPtr<PseudoRetainable> ptr2; - EXPECT_EQ(&obj, ptr1.Get()); - EXPECT_EQ(nullptr, ptr2.Get()); - ptr2 = std::move(ptr1); - EXPECT_EQ(nullptr, ptr1.Get()); - EXPECT_EQ(&obj, ptr2.Get()); - EXPECT_EQ(1, obj.retain_count()); - EXPECT_EQ(0, obj.release_count()); - } - EXPECT_EQ(1, obj.retain_count()); - EXPECT_EQ(1, obj.release_count()); - } - EXPECT_EQ(1, obj.retain_count()); - EXPECT_EQ(1, obj.release_count()); -} -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/retain_ptr_unittest.cpp
149
150
151
152
153
154
155
156
157
158
EXPECT_EQ(1, obj1.retain_count()); EXPECT_EQ(0, obj1.release_count()); } EXPECT_EQ(1, obj1.retain_count()); EXPECT_EQ(1, obj1.release_count()); } EXPECT_EQ(1, obj1.retain_count()); EXPECT_EQ(1, obj1.release_count()); }
+ show +
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
TEST(RetainPtr, Assign) { PseudoRetainable obj; { RetainPtr<PseudoRetainable> ptr(&obj); { RetainPtr<PseudoRetainable> ptr2; ptr2 = ptr; EXPECT_EQ(2, obj.retain_count()); EXPECT_EQ(0, obj.release_count()); } EXPECT_EQ(2, obj.retain_count()); EXPECT_EQ(1, obj.release_count()); } EXPECT_EQ(2, obj.retain_count()); EXPECT_EQ(2, obj.release_count()); } TEST(RetainPtr, MoveAssign) { PseudoRetainable obj; { RetainPtr<PseudoRetainable> ptr1(&obj); { RetainPtr<PseudoRetainable> ptr2; EXPECT_EQ(&obj, ptr1.Get()); EXPECT_EQ(nullptr, ptr2.Get()); ptr2 = std::move(ptr1); EXPECT_EQ(nullptr, ptr1.Get()); EXPECT_EQ(&obj, ptr2.Get()); EXPECT_EQ(1, obj.retain_count()); EXPECT_EQ(0, obj.release_count()); } EXPECT_EQ(1, obj.retain_count()); EXPECT_EQ(1, obj.release_count()); } EXPECT_EQ(1, obj.retain_count()); EXPECT_EQ(1, obj.release_count());
+ show +
195
196
197
198
199
200
201
202
203
204
} TEST(RetainPtr, Equals) { PseudoRetainable obj1; PseudoRetainable obj2; RetainPtr<PseudoRetainable> null_ptr1; RetainPtr<PseudoRetainable> obj1_ptr1(&obj1); RetainPtr<PseudoRetainable> obj2_ptr1(&obj2); { RetainPtr<PseudoRetainable> null_ptr2;

[CVE-2023-40093_1.diff] cfx_seekablestreamproxy.h #4
- uint16_t m_wCodePage; - size_t m_wBOMLength; - FX_FILESIZE m_iPosition; - RetainPtr<IFX_SeekableReadStream> m_pStream; + FX_CodePage m_wCodePage = FX_CodePage::kDefANSI; + size_t m_wBOMLength = 0; + FX_FILESIZE m_iPosition = 0; + RetainPtr<IFX_SeekableReadStream> const m_pStream;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/cfx_seekablestreamproxy.h
32
33
34
35
36
37
38
39
40
41
}; explicit CFX_SeekableStreamProxy( const RetainPtr<IFX_SeekableReadStream>& stream); ~CFX_SeekableStreamProxy() override; FX_FILESIZE GetPosition(); void Seek(From eSeek, FX_FILESIZE iOffset); size_t ReadData(uint8_t* pBuffer, size_t iBufferSize);
+ show +
42
43
44
45
uint16_t m_wCodePage; size_t m_wBOMLength; FX_FILESIZE m_iPosition; RetainPtr<IFX_SeekableReadStream> m_pStream;
+ show +
46
47
48
}; #endif // CORE_FXCRT_CFX_SEEKABLESTREAMPROXY_H_

[CVE-2023-40093_1.diff] fx_extension.h #2
+#include <ctype.h> +#include <math.h> +#include <wctype.h> -#include <cctype> -#include <cmath> -#include <cwctype> -#include <memory> - -#include "core/fxcrt/fx_string.h" +#include "build/build_config.h"
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_extension.h
2
3
4
5
6
7
8
9
10
11
// Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef CORE_FXCRT_FX_EXTENSION_H_ #define CORE_FXCRT_FX_EXTENSION_H_ #include <time.h>
+ show +
12
13
14
15
16
17
#include <cctype> #include <cmath> #include <cwctype> #include <memory> #include "core/fxcrt/fx_string.h"
+ show +
18
19
20
21
22
23
24
25
26
27
#if defined(USE_SYSTEM_ICUUC) #include <unicode/uchar.h> #else #include "third_party/icu/source/common/unicode/uchar.h" #endif #define FX_INVALID_OFFSET static_cast<uint32_t>(-1) #ifdef PDF_ENABLE_XFA

[CVE-2023-40093_1.diff] bytestring.h #3
- static ByteString FormatInteger(int i) WARN_UNUSED_RESULT; - static ByteString FormatFloat(float f) WARN_UNUSED_RESULT; - static ByteString Format(const char* pFormat, ...) WARN_UNUSED_RESULT; - static ByteString FormatV(const char* pFormat, - va_list argList) WARN_UNUSED_RESULT; + [[nodiscard]] static ByteString FormatInteger(int i); + [[nodiscard]] static ByteString FormatFloat(float f); + [[nodiscard]] static ByteString Format(const char* pFormat, ...); + [[nodiscard]] static ByteString FormatV(const char* pFormat, va_list argList);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/bytestring.h
24
25
26
27
28
29
30
31
32
33
namespace fxcrt { // A mutable string with shared buffers using copy-on-write semantics that // avoids the cost of std::string's iterator stability guarantees. class ByteString { public: using CharType = char; using const_iterator = const CharType*; using const_reverse_iterator = std::reverse_iterator<const_iterator>;
+ show +
34
35
36
37
38
static ByteString FormatInteger(int i) WARN_UNUSED_RESULT; static ByteString FormatFloat(float f) WARN_UNUSED_RESULT; static ByteString Format(const char* pFormat, ...) WARN_UNUSED_RESULT; static ByteString FormatV(const char* pFormat, va_list argList) WARN_UNUSED_RESULT;
+ show +
39
40
41
42
43
44
45
46
47
48
ByteString(); ByteString(const ByteString& other); // Move-construct a ByteString. After construction, |other| is empty. ByteString(ByteString&& other) noexcept; // Deliberately implicit to avoid calling on every string literal. // NOLINTNEXTLINE(runtime/explicit) ByteString(char ch);

[CVE-2023-40093_1.diff] fx_coordinates.h #4
+using CFX_Point16 = CFX_PTemplate<int16_t>; - float Length() const { return sqrt(x * x + y * y); } - void Normalize() { - float fLen = Length(); - if (fLen < 0.0001f) - return; - - x /= fLen; - y /= fLen; - } - void Translate(BaseType dx, BaseType dy) { - x += dx; - y += dy; - } - void Scale(BaseType sx, BaseType sy) { - x *= sx; - y *= sy; - } - void Rotate(float fRadian) { - float cosValue = cos(fRadian); - float sinValue = sin(fRadian); - x = x * cosValue - y * sinValue; - y = x * sinValue + y * cosValue; - } + float Length() const; + void Normalize();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_coordinates.h
141
142
143
144
145
146
147
148
149
150
CFX_VTemplate() : CFX_PTemplate<BaseType>() {} CFX_VTemplate(BaseType new_x, BaseType new_y) : CFX_PTemplate<BaseType>(new_x, new_y) {} CFX_VTemplate(const CFX_VTemplate& other) : CFX_PTemplate<BaseType>(other) {} CFX_VTemplate(const CFX_PTemplate<BaseType>& point1, const CFX_PTemplate<BaseType>& point2) : CFX_PTemplate<BaseType>(point2.x - point1.x, point2.y - point1.y) {}
+ show +
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
float Length() const { return sqrt(x * x + y * y); } void Normalize() { float fLen = Length(); if (fLen < 0.0001f) return; x /= fLen; y /= fLen; } void Translate(BaseType dx, BaseType dy) { x += dx; y += dy; } void Scale(BaseType sx, BaseType sy) { x *= sx; y *= sy; } void Rotate(float fRadian) { float cosValue = cos(fRadian); float sinValue = sin(fRadian); x = x * cosValue - y * sinValue; y = x * sinValue + y * cosValue;
+ show +
173
174
175
176
177
178
179
180
181
182
} }; using CFX_Vector = CFX_VTemplate<int32_t>; using CFX_VectorF = CFX_VTemplate<float>; // Rectangles. // TODO(tsepez): Consolidate all these different rectangle classes. // LTRB rectangles (y-axis runs downwards). // Struct layout is compatible with win32 RECT.

[CVE-2023-40093_1.diff] fx_coordinates.h #5
- bool Valid() const { - pdfium::base::CheckedNumeric<int> w = right; - pdfium::base::CheckedNumeric<int> h = bottom; - w -= left; - h -= top; - return w.IsValid() && h.IsValid(); - } + bool Valid() const; + FX_RECT SwappedClipBox(int width, int height, bool bFlipX, bool bFlipY) const;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_coordinates.h
181
182
183
184
185
186
187
188
189
190
// LTRB rectangles (y-axis runs downwards). // Struct layout is compatible with win32 RECT. struct FX_RECT { FX_RECT() = default; FX_RECT(int l, int t, int r, int b) : left(l), top(t), right(r), bottom(b) {} int Width() const { return right - left; } int Height() const { return bottom - top; } bool IsEmpty() const { return right <= left || bottom <= top; }
+ show +
191
192
193
194
195
196
bool Valid() const { pdfium::base::CheckedNumeric<int> w = right; pdfium::base::CheckedNumeric<int> h = bottom; w -= left; h -= top; return w.IsValid() && h.IsValid();
+ show +
197
198
199
200
201
202
203
204
205
206
} void Normalize(); void Intersect(const FX_RECT& src); void Intersect(int l, int t, int r, int b) { Intersect(FX_RECT(l, t, r, b)); } void Offset(int dx, int dy) { left += dx; right += dx; top += dy;

[CVE-2023-40093_1.diff] fx_coordinates.h #7
- void InitRect(const CFX_PointF& point) { - left = point.x; - right = point.x; - bottom = point.y; - top = point.y; - }
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_coordinates.h
254
255
256
257
258
259
260
261
262
263
// Returned rect has bounds rounded up/down such that the original is // contained in it. FX_RECT GetOuterRect() const; // Returned rect has bounds rounded up/down such that the dimensions are // rounded up and the sum of the error in the bounds is minimized. FX_RECT GetClosestRect() const; CFX_FloatRect GetCenterSquare() const;
+ show +
264
265
266
267
268
void InitRect(const CFX_PointF& point) { left = point.x; right = point.x; bottom = point.y; top = point.y;
+ show +
269
270
271
272
273
274
275
276
277
278
} void UpdateRect(const CFX_PointF& point); float Width() const { return right - left; } float Height() const { return top - bottom; } float Left() const { return left; } float Bottom() const { return bottom; } float Right() const { return right; } float Top() const { return top; }

[CVE-2023-40093_1.diff] unowned_ptr.h #4
+ void Reset(T* obj = nullptr) { + ProbeForLowSeverityLifetimeIssue(); + m_pObj = obj; + } + -template <typename T, typename U> -inline bool operator==(const U* lhs, const UnownedPtr<T>& rhs) { - return rhs == lhs; -} - -template <typename T, typename U> -inline bool operator!=(const U* lhs, const UnownedPtr<T>& rhs) { - return rhs != lhs; -} - +namespace pdfium { + +// Type-deducing wrapper to make an UnownedPtr from an ordinary pointer, +// since equivalent constructor is explicit. +template <typename T> +UnownedPtr<T> WrapUnowned(T* that) { + return UnownedPtr<T>(that); +} + +} // namespace pdfium +
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/unowned_ptr.h
126
127
128
129
130
131
132
133
134
135
inline void ReleaseBadPointer() { #if defined(ADDRESS_SANITIZER) m_pObj = nullptr; #endif } T* m_pObj = nullptr; };
+ show +
136
137
138
139
140
141
142
143
template <typename T, typename U> inline bool operator==(const U* lhs, const UnownedPtr<T>& rhs) { return rhs == lhs; } template <typename T, typename U> inline bool operator!=(const U* lhs, const UnownedPtr<T>& rhs) { return rhs != lhs;
+ show +
144
145
146
147
148
149
150
} } // namespace fxcrt using fxcrt::UnownedPtr; #endif // CORE_FXCRT_UNOWNED_PTR_H_

[CVE-2023-40093_1.diff] observed_ptr.h #2
- ~Observable(); - void AddObserver(ObserverIface* pObserver) { - ASSERT(!pdfium::ContainsKey(m_Observers, pObserver)); - m_Observers.insert(pObserver); - } - void RemoveObserver(ObserverIface* pObserver) { - ASSERT(pdfium::ContainsKey(m_Observers, pObserver)); - m_Observers.erase(pObserver); - } - void NotifyObservers() { - for (auto* pObserver : m_Observers) - pObserver->OnObservableDestroyed(); - m_Observers.clear(); - } + ~Observable(); + + void AddObserver(ObserverIface* pObserver); + void RemoveObserver(ObserverIface* pObserver); + void NotifyObservers();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/observed_ptr.h
16
17
18
19
20
21
22
23
24
25
public: // General-purpose interface for more complicated cleanup. class ObserverIface { public: virtual ~ObserverIface() = default; virtual void OnObservableDestroyed() = 0; }; Observable(); Observable(const Observable& that) = delete;
+ show +
26
27
28
29
30
31
32
33
34
35
36
37
38
~Observable(); void AddObserver(ObserverIface* pObserver) { ASSERT(!pdfium::ContainsKey(m_Observers, pObserver)); m_Observers.insert(pObserver); } void RemoveObserver(ObserverIface* pObserver) { ASSERT(pdfium::ContainsKey(m_Observers, pObserver)); m_Observers.erase(pObserver); } void NotifyObservers() { for (auto* pObserver : m_Observers) pObserver->OnObservableDestroyed(); m_Observers.clear();
+ show +
39
40
41
42
43
44
45
46
47
48
} Observable& operator=(const Observable& that) = delete; protected: size_t ActiveObserversForTesting() const { return m_Observers.size(); } private: std::set<ObserverIface*> m_Observers; };

[CVE-2023-40093_1.diff] cfx_seekablestreamproxy.cpp #5
- : m_wCodePage(FX_CODEPAGE_DefANSI), - m_wBOMLength(0), - m_iPosition(0), - m_pStream(stream) { - ASSERT(m_pStream); + : m_pStream(stream) { + DCHECK(m_pStream);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/cfx_seekablestreamproxy.cpp
105
106
107
108
109
110
111
112
113
114
} // namespace #define BOM_UTF8_MASK 0x00FFFFFF #define BOM_UTF8 0x00BFBBEF #define BOM_UTF16_MASK 0x0000FFFF #define BOM_UTF16_BE 0x0000FFFE #define BOM_UTF16_LE 0x0000FEFF CFX_SeekableStreamProxy::CFX_SeekableStreamProxy( const RetainPtr<IFX_SeekableReadStream>& stream)
+ show +
115
116
117
118
119
: m_wCodePage(FX_CODEPAGE_DefANSI), m_wBOMLength(0), m_iPosition(0), m_pStream(stream) { ASSERT(m_pStream);
+ show +
120
121
122
123
124
125
126
127
128
129
Seek(From::Begin, 0); uint32_t bom = 0; ReadData(reinterpret_cast<uint8_t*>(&bom), 3); bom &= BOM_UTF8_MASK; if (bom == BOM_UTF8) { m_wBOMLength = 3; m_wCodePage = FX_CODEPAGE_UTF8;

[CVE-2023-40093_1.diff] cfx_memorystream.cpp #2
+#include "core/fxcrt/span_util.h" -CFX_MemoryStream::CFX_MemoryStream() : m_nTotalSize(0), m_nCurSize(0) {} - -CFX_MemoryStream::CFX_MemoryStream( - std::unique_ptr<uint8_t, FxFreeDeleter> pBuffer, - size_t nSize) - : m_data(std::move(pBuffer)), m_nTotalSize(nSize), m_nCurSize(nSize) {} +CFX_MemoryStream::CFX_MemoryStream() = default;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/cfx_memorystream.cpp
4
5
6
7
8
9
10
11
12
13
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "core/fxcrt/cfx_memorystream.h" #include <algorithm> #include <utility> #include "core/fxcrt/fx_safe_types.h"
+ show +
14
15
16
17
18
19
CFX_MemoryStream::CFX_MemoryStream() : m_nTotalSize(0), m_nCurSize(0) {} CFX_MemoryStream::CFX_MemoryStream( std::unique_ptr<uint8_t, FxFreeDeleter> pBuffer, size_t nSize) : m_data(std::move(pBuffer)), m_nTotalSize(nSize), m_nCurSize(nSize) {}
+ show +
20
21
22
23
24
25
26
27
28
29
CFX_MemoryStream::~CFX_MemoryStream() = default; FX_FILESIZE CFX_MemoryStream::GetSize() { return static_cast<FX_FILESIZE>(m_nCurSize); } bool CFX_MemoryStream::IsEOF() { return m_nCurPos >= static_cast<size_t>(GetSize()); }

[CVE-2023-40093_1.diff] widestring.h #5
- static WideString FromASCII(ByteStringView str) WARN_UNUSED_RESULT; - static WideString FromLatin1(ByteStringView str) WARN_UNUSED_RESULT; - static WideString FromDefANSI(ByteStringView str) WARN_UNUSED_RESULT; - static WideString FromUTF8(ByteStringView str) WARN_UNUSED_RESULT; - static WideString FromUTF16LE(const unsigned short* str, - size_t len) WARN_UNUSED_RESULT; - static WideString FromUTF16BE(const unsigned short* wstr, - size_t wlen) WARN_UNUSED_RESULT; + [[nodiscard]] static WideString FromASCII(ByteStringView str); + [[nodiscard]] static WideString FromLatin1(ByteStringView str); + [[nodiscard]] static WideString FromDefANSI(ByteStringView str); + [[nodiscard]] static WideString FromUTF8(ByteStringView str); + [[nodiscard]] static WideString FromUTF16LE(const unsigned short* str, + size_t len); + [[nodiscard]] static WideString FromUTF16BE(const unsigned short* wstr, + size_t wlen); - static size_t WStringLength(const unsigned short* str) WARN_UNUSED_RESULT; + [[nodiscard]] static size_t WStringLength(const unsigned short* str);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/widestring.h
53
54
55
56
57
58
59
60
61
62
WideString(char) = delete; WideString(const wchar_t* pStr, size_t len); explicit WideString(WideStringView str); WideString(WideStringView str1, WideStringView str2); WideString(const std::initializer_list<WideStringView>& list); ~WideString();
+ show +
63
64
65
66
67
68
69
70
71
72
static WideString FromASCII(ByteStringView str) WARN_UNUSED_RESULT; static WideString FromLatin1(ByteStringView str) WARN_UNUSED_RESULT; static WideString FromDefANSI(ByteStringView str) WARN_UNUSED_RESULT; static WideString FromUTF8(ByteStringView str) WARN_UNUSED_RESULT; static WideString FromUTF16LE(const unsigned short* str, size_t len) WARN_UNUSED_RESULT; static WideString FromUTF16BE(const unsigned short* wstr, size_t wlen) WARN_UNUSED_RESULT; static size_t WStringLength(const unsigned short* str) WARN_UNUSED_RESULT;
+ show +
73
74
75
76
77
78
79
80
81
82
// Explicit conversion to C-style wide string. // Note: Any subsequent modification of |this| will invalidate the result. const wchar_t* c_str() const { return m_pData ? m_pData->m_String : L""; } // Explicit conversion to WideStringView. // Note: Any subsequent modification of |this| will invalidate the result. WideStringView AsStringView() const { return WideStringView(c_str(), GetLength()); }

[CVE-2023-40093_1.diff] fx_string.cpp #3
- if (bsStr.IsEmpty()) - return WideString(); - - CFX_UTF8Decoder decoder; - for (size_t i = 0; i < bsStr.GetLength(); i++) - decoder.Input(bsStr[i]); - - return WideString(decoder.GetResult()); + CFX_UTF8Decoder decoder(bsStr); + return decoder.TakeResult();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxcrt/fx_string.cpp
16
17
18
19
20
21
22
23
24
25
ByteString FX_UTF8Encode(WideStringView wsStr) { CFX_UTF8Encoder encoder; for (size_t i = 0; i < wsStr.GetLength(); ++i) encoder.Input(wsStr[i]); return ByteString(encoder.GetResult()); } WideString FX_UTF8Decode(ByteStringView bsStr) {
+ show +
26
27
28
29
30
31
32
33
if (bsStr.IsEmpty()) return WideString(); CFX_UTF8Decoder decoder; for (size_t i = 0; i < bsStr.GetLength(); i++) decoder.Input(bsStr[i]); return WideString(decoder.GetResult());
+ show +
34
35
36
37
38
39
40
41
42
43
} namespace { constexpr float kFractionScalesFloat[] = { 0.1f, 0.01f, 0.001f, 0.0001f, 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, 0.000000001f, 0.0000000001f, 0.00000000001f}; const double kFractionScalesDouble[] = {

[CVE-2023-40093_1.diff] BUILD.gn #2
- "cba_fontmap.cpp", - "cba_fontmap.h", - "cline.cpp", - "cline.h",
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfdoc/BUILD.gn
1
2
3
4
5
6
7
8
9
# Copyright 2018 The PDFium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("../../pdfium.gni") import("../../testing/test.gni") source_set("fpdfdoc") { sources = [
+ show +
10
11
12
13
"cba_fontmap.cpp", "cba_fontmap.h", "cline.cpp", "cline.h",
+ show +
14
15
16
17
18
19
20
21
22
23
"cpdf_aaction.cpp", "cpdf_aaction.h", "cpdf_action.cpp", "cpdf_action.h", "cpdf_annot.cpp", "cpdf_annot.h", "cpdf_annotlist.cpp", "cpdf_annotlist.h", "cpdf_apsettings.cpp", "cpdf_apsettings.h",

[CVE-2023-40093_1.diff] cpdf_dest_unittest.cpp #2
- array->AddNew<CPDF_Number>(0); // Page Index. - array->AddNew<CPDF_Name>("XYZ"); - array->AddNew<CPDF_Number>(4); // X + array->AppendNew<CPDF_Number>(0); // Page Index. + array->AppendNew<CPDF_Name>("XYZ"); + array->AppendNew<CPDF_Number>(4); // X - auto dest = pdfium::MakeUnique<CPDF_Dest>(); - EXPECT_FALSE(dest->GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom)); + CPDF_Dest dest(nullptr); + EXPECT_FALSE(dest.GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom)); - auto dest = pdfium::MakeUnique<CPDF_Dest>(array.Get()); - EXPECT_FALSE(dest->GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom)); + CPDF_Dest dest(array); + EXPECT_FALSE(dest.GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom)); - array->AddNew<CPDF_Number>(5); // Y - array->AddNew<CPDF_Number>(6); // Zoom. + array->AppendNew<CPDF_Number>(5); // Y + array->AppendNew<CPDF_Number>(6); // Zoom. - auto dest = pdfium::MakeUnique<CPDF_Dest>(array.Get()); - EXPECT_TRUE(dest->GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom)); + CPDF_Dest dest(array); + EXPECT_TRUE(dest.GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom));
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfdoc/cpdf_dest_unittest.cpp
14
15
16
17
18
19
20
21
22
23
TEST(cpdf_dest, GetXYZ) { bool hasX; bool hasY; bool hasZoom; float x; float y; float zoom; // |array| must outlive |dest|. auto array = pdfium::MakeRetain<CPDF_Array>();
+ show +
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
array->AddNew<CPDF_Number>(0); // Page Index. array->AddNew<CPDF_Name>("XYZ"); array->AddNew<CPDF_Number>(4); // X { auto dest = pdfium::MakeUnique<CPDF_Dest>(); EXPECT_FALSE(dest->GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom)); } { // Not enough entries. auto dest = pdfium::MakeUnique<CPDF_Dest>(array.Get()); EXPECT_FALSE(dest->GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom)); } array->AddNew<CPDF_Number>(5); // Y array->AddNew<CPDF_Number>(6); // Zoom. { auto dest = pdfium::MakeUnique<CPDF_Dest>(array.Get()); EXPECT_TRUE(dest->GetXYZ(&hasX, &hasY, &hasZoom, &x, &y, &zoom));
+ show +
41
42
43
44
45
46
47
48
49
50
EXPECT_TRUE(hasX); EXPECT_TRUE(hasY); EXPECT_TRUE(hasZoom); EXPECT_EQ(4, x); EXPECT_EQ(5, y); EXPECT_EQ(6, zoom); } // Set zoom to 0. array->SetNewAt<CPDF_Number>(4, 0); {

[CVE-2023-40093_1.diff] cpdf_annotlist.cpp #7
+bool CPDF_AnnotList::Contains(const CPDF_Annot* pAnnot) const { + auto it = std::find_if(m_AnnotList.begin(), m_AnnotList.end(), + [pAnnot](const std::unique_ptr<CPDF_Annot>& annot) { + return annot.get() == pAnnot; + }); + return it != m_AnnotList.end(); +} + - const CFX_Matrix* pMatrix, - bool bWidgetPass, - CPDF_RenderOptions* pOptions, - FX_RECT* clip_rect) { + const CFX_Matrix& mtMatrix, + bool bWidgetPass) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfdoc/cpdf_annotlist.cpp
218
219
220
221
222
223
224
225
226
227
std::vector<std::unique_ptr<CPDF_Annot>> popups(nPopupCount); for (size_t i = 0; i < nPopupCount; ++i) popups[i] = std::move(m_AnnotList[m_nAnnotCount + i]); m_AnnotList.clear(); } void CPDF_AnnotList::DisplayPass(CPDF_Page* pPage, CFX_RenderDevice* pDevice, CPDF_RenderContext* pContext, bool bPrinting,
+ show +
228
229
230
231
const CFX_Matrix* pMatrix, bool bWidgetPass, CPDF_RenderOptions* pOptions, FX_RECT* clip_rect) {
+ show +
232
233
234
235
236
237
238
239
240
241
for (const auto& pAnnot : m_AnnotList) { bool bWidget = pAnnot->GetSubtype() == CPDF_Annot::Subtype::WIDGET; if ((bWidgetPass && !bWidget) || (!bWidgetPass && bWidget)) continue; uint32_t annot_flags = pAnnot->GetFlags(); if (annot_flags & pdfium::annotation_flags::kHidden) continue; if (bPrinting && (annot_flags & pdfium::annotation_flags::kPrint) == 0)

[CVE-2023-40093_1.diff] cpdf_formfield.cpp #13
- case CPDF_Object::kArray: - pValue = pValue->AsArray()->GetDirectObjectAt(0); - if (pValue) - return pValue->GetUnicodeText(); + case CPDF_Object::kArray: { + RetainPtr<const CPDF_Object> pNewValue = + pValue->AsArray()->GetDirectObjectAt(0); + if (pNewValue) + return pNewValue->GetUnicodeText(); + }
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfdoc/cpdf_formfield.cpp
303
304
305
306
307
308
309
310
311
312
if (!bDefault && m_Type != kText) pValue = GetDefaultValueObject(); if (!pValue) return WideString(); } switch (pValue->GetType()) { case CPDF_Object::kString: case CPDF_Object::kStream: return pValue->GetUnicodeText();
+ show +
313
314
315
316
case CPDF_Object::kArray: pValue = pValue->AsArray()->GetDirectObjectAt(0); if (pValue) return pValue->GetUnicodeText();
+ show +
317
318
319
320
321
322
323
324
325
326
break; default: break; } return WideString(); } WideString CPDF_FormField::GetValue() const { return GetValue(false); }

[CVE-2023-40093_1.diff] cpdf_formfield.cpp #21
- if (bSelected) - SetItemSelectionSelected(index, opt_value); - else - SetItemSelectionUnselected(index, opt_value); + SetItemSelectionSelected(index, opt_value); + + // UseSelectedIndicesObject() has a non-trivial linearithmic run-time, so run + // only if necessary. + if (!m_bUseSelectedIndices) + m_bUseSelectedIndices = UseSelectedIndicesObject();
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdfdoc/cpdf_formfield.cpp
513
514
515
516
517
518
519
520
521
522
ASSERT(GetType() == kComboBox || GetType() == kListBox); if (index < 0 || index >= CountOptions()) return false; WideString opt_value = GetOptionValue(index); if (notify == NotificationOption::kNotify && !NotifyListOrComboBoxBeforeChange(opt_value)) { return false; }
+ show +
523
524
525
526
if (bSelected) SetItemSelectionSelected(index, opt_value); else SetItemSelectionUnselected(index, opt_value);
+ show +
527
528
529
530
531
532
533
534
535
536
if (notify == NotificationOption::kNotify) NotifyListOrComboBoxAfterChange(); return true; } void CPDF_FormField::SetItemSelectionSelected(int index, const WideString& opt_value) { if (GetType() != kListBox) { m_pDict->SetNewFor<CPDF_String>(pdfium::form_fields::kV, opt_value);

[CVE-2023-40093_1.diff] cfx_fontmgr.cpp #6
-Optional<pdfium::span<const uint8_t>> CFX_FontMgr::GetBuiltinFont( - size_t index) { - if (index < FX_ArraySize(g_FoxitFonts)) { - return pdfium::make_span(g_FoxitFonts[index].m_pFontData, - g_FoxitFonts[index].m_dwSize); - } - size_t mm_index = index - FX_ArraySize(g_FoxitFonts); - if (mm_index < FX_ArraySize(g_MMFonts)) { - return pdfium::make_span(g_MMFonts[mm_index].m_pFontData, - g_MMFonts[mm_index].m_dwSize); - } - return {}; +pdfium::span<const uint8_t> CFX_FontMgr::GetStandardFont(size_t index) { + CHECK_LT(index, std::size(kFoxitFonts)); + return pdfium::make_span(kFoxitFonts[index].m_pFontData, + kFoxitFonts[index].m_dwSize); +} + +// static +pdfium::span<const uint8_t> CFX_FontMgr::GetGenericSansFont() { + return pdfium::make_span(kGenericSansFont.m_pFontData, + kGenericSansFont.m_dwSize); +} + +// static +pdfium::span<const uint8_t> CFX_FontMgr::GetGenericSerifFont() { + return pdfium::make_span(kGenericSerifFont.m_pFontData, + kGenericSerifFont.m_dwSize);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/cfx_fontmgr.cpp
152
153
154
155
156
157
158
159
160
161
if (!face) return nullptr; if (FT_Set_Pixel_Sizes(face->GetRec(), 64, 64) != 0) return nullptr; return face; } // static
+ show +
162
163
164
165
166
167
168
169
170
171
172
173
Optional<pdfium::span<const uint8_t>> CFX_FontMgr::GetBuiltinFont( size_t index) { if (index < FX_ArraySize(g_FoxitFonts)) { return pdfium::make_span(g_FoxitFonts[index].m_pFontData, g_FoxitFonts[index].m_dwSize); } size_t mm_index = index - FX_ArraySize(g_FoxitFonts); if (mm_index < FX_ArraySize(g_MMFonts)) { return pdfium::make_span(g_MMFonts[mm_index].m_pFontData, g_MMFonts[mm_index].m_dwSize); } return {};
+ show +
174
175
176
177
178
179
180
181
182
183
} bool CFX_FontMgr::FreeTypeVersionSupportsHinting() const { FT_Int major; FT_Int minor; FT_Int patch; FT_Library_Version(m_FTLibrary.get(), &major, &minor, &patch); // Freetype versions >= 2.8.1 support hinting even if subpixel rendering is // disabled. https://sourceforge.net/projects/freetype/files/freetype2/2.8.1/ return major > 2 || (major == 2 && minor > 8) ||

[CVE-2023-40093_1.diff] BUILD.gn #2
-config("fxge_warnings") { - visibility = [ ":*" ] - if (is_clang) { - cflags = [ - # http://code.google.com/p/pdfium/issues/detail?id=188 - "-Wno-switch", - ] - } -} - + "agg/fx_agg_driver.cpp", + "agg/fx_agg_driver.h", + "calculate_pitch.cpp", + "calculate_pitch.h", + "cfx_defaultrenderdevice.cpp", + "cfx_drawutils.cpp", + "cfx_drawutils.h", + "cfx_fillrenderoptions.h",
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/BUILD.gn
1
2
3
4
5
6
7
8
# Copyright 2018 The PDFium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/freetype/freetype.gni") import("../../pdfium.gni") import("../../testing/test.gni")
+ show +
9
10
11
12
13
14
15
16
17
config("fxge_warnings") { visibility = [ ":*" ] if (is_clang) { cflags = [ # http://code.google.com/p/pdfium/issues/detail?id=188 "-Wno-switch", ] } }
+ show +
18
19
20
21
22
23
24
25
26
27
source_set("fxge") { sources = [ "cfx_cliprgn.cpp", "cfx_cliprgn.h", "cfx_color.cpp", "cfx_color.h", "cfx_defaultrenderdevice.h", "cfx_face.cpp", "cfx_face.h",

[CVE-2023-40093_1.diff] fx_font.h #3
-#define FXFONT_CIDFONT 0x100000 -#define GET_TT_SHORT(w) (uint16_t)(((w)[0] << 8) | (w)[1]) -#define GET_TT_LONG(w) \ - (uint32_t)(((w)[0] << 24) | ((w)[1] << 16) | ((w)[2] << 8) | (w)[3]) +// These numbers come from the OpenType name table specification. +constexpr uint16_t kNamePlatformAppleUnicode = 0; +constexpr uint16_t kNamePlatformMac = 1; +constexpr uint16_t kNamePlatformWindows = 3; -#if defined _SKIA_SUPPORT_ || defined _SKIA_SUPPORT_PATHS_ +#if defined(_SKIA_SUPPORT_)
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/fx_font.h
32
33
34
35
36
37
38
39
40
41
#define FXFONT_SYMBOLIC (1 << 2) #define FXFONT_SCRIPT (1 << 3) #define FXFONT_NONSYMBOLIC (1 << 5) #define FXFONT_ITALIC (1 << 6) #define FXFONT_ALLCAP (1 << 16) #define FXFONT_SMALLCAP (1 << 17) #define FXFONT_FORCE_BOLD (1 << 18) /* Other font flags */ #define FXFONT_USEEXTERNATTR 0x80000
+ show +
42
43
44
45
46
47
48
#define FXFONT_CIDFONT 0x100000 #define GET_TT_SHORT(w) (uint16_t)(((w)[0] << 8) | (w)[1]) #define GET_TT_LONG(w) \ (uint32_t)(((w)[0] << 24) | ((w)[1] << 16) | ((w)[2] << 8) | (w)[3]) #if defined _SKIA_SUPPORT_ || defined _SKIA_SUPPORT_PATHS_
+ show +
49
50
51
52
53
54
55
56
57
58
class SkTypeface; using CFX_TypeFace = SkTypeface; #endif class TextGlyphPos; FX_RECT GetGlyphsBBox(const std::vector<TextGlyphPos>& glyphs, int anti_alias); ByteString GetNameFromTT(pdfium::span<const uint8_t> name_table, uint32_t name);

[CVE-2023-40093_1.diff] cfx_glyphcache.cpp #6
+#if BUILDFLAG(IS_APPLE) + return; + } +#else + CHECK(!bNative); +#endif + + if (pFont->GetSubstFont()) { + pKeyGen->Generate(9, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, + anti_alias, pFont->GetSubstFont()->m_Weight, + pFont->GetSubstFont()->m_ItalicAngle, + pFont->IsVertical()); - if (pFont->GetSubstFont()) { - pKeyGen->Generate(9, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, - anti_alias, pFont->GetSubstFont()->m_Weight, - pFont->GetSubstFont()->m_ItalicAngle, - pFont->IsVertical()); - } else { - pKeyGen->Generate(6, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, - anti_alias); - } + pKeyGen->Generate(6, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, + anti_alias); -CFX_GlyphCache::CFX_GlyphCache(RetainPtr<CFX_Face> face) : m_Face(face) {} +CFX_GlyphCache::CFX_GlyphCache(RetainPtr<CFX_Face> face) + : m_Face(std::move(face)) {}
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/cfx_glyphcache.cpp
75
76
77
78
79
80
81
82
83
84
if (pFont->GetSubstFont()) { pKeyGen->Generate(10, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical(), 3); } else { pKeyGen->Generate(7, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, anti_alias, 3); } } else {
+ show +
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
if (pFont->GetSubstFont()) { pKeyGen->Generate(9, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical()); } else { pKeyGen->Generate(6, nMatrixA, nMatrixB, nMatrixC, nMatrixD, dest_width, anti_alias); } } } } // namespace CFX_GlyphCache::CFX_GlyphCache(RetainPtr<CFX_Face> face) : m_Face(face) {}
+ show +
100
101
102
103
104
105
106
107
108
109
CFX_GlyphCache::~CFX_GlyphCache() = default; std::unique_ptr<CFX_GlyphBitmap> CFX_GlyphCache::RenderGlyph( const CFX_Font* pFont, uint32_t glyph_index, bool bFontStyle, const CFX_Matrix& matrix, uint32_t dest_width, int anti_alias) {

[CVE-2023-40093_1.diff] cfx_renderdevice.cpp #15
-#if defined _SKIA_SUPPORT_ || defined _SKIA_SUPPORT_PATHS_ -void CFX_RenderDevice::Flush(bool release) { - if (release) - m_pDeviceDriver.reset(); - else - m_pDeviceDriver->Flush(); -} -#endif - + DCHECK(pDriver); + DCHECK(!m_pDeviceDriver);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/cfx_renderdevice.cpp
378
379
380
381
382
383
384
385
386
387
} // static CFX_Matrix CFX_RenderDevice::GetFlipMatrix(float width, float height, float left, float top) { return CFX_Matrix(width, 0, 0, -height, left, top + height); }
+ show +
388
389
390
391
392
393
394
395
#if defined _SKIA_SUPPORT_ || defined _SKIA_SUPPORT_PATHS_ void CFX_RenderDevice::Flush(bool release) { if (release) m_pDeviceDriver.reset(); else m_pDeviceDriver->Flush(); } #endif
+ show +
396
397
398
399
400
401
402
403
404
405
void CFX_RenderDevice::SetDeviceDriver( std::unique_ptr<RenderDeviceDriverIface> pDriver) { m_pDeviceDriver = std::move(pDriver); InitDeviceInfo(); } void CFX_RenderDevice::InitDeviceInfo() { m_Width = m_pDeviceDriver->GetDeviceCaps(FXDC_PIXEL_WIDTH); m_Height = m_pDeviceDriver->GetDeviceCaps(FXDC_PIXEL_HEIGHT);

[CVE-2023-40093_1.diff] renderdevicedriver_iface.cpp #4
-bool RenderDeviceDriverIface::DrawDeviceText(int nChars, - const TextCharPos* pCharPos, - CFX_Font* pFont, - const CFX_Matrix& mtObject2Device, - float font_size, - uint32_t color) { +bool RenderDeviceDriverIface::DrawDeviceText( + pdfium::span<const TextCharPos> pCharPos, + CFX_Font* pFont, + const CFX_Matrix& mtObject2Device, + float font_size, + uint32_t color, + const CFX_TextRenderOptions& options) {
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/renderdevicedriver_iface.cpp
52
53
54
55
56
57
58
59
60
61
RetainPtr<CFX_DIBitmap> RenderDeviceDriverIface::GetBackDrop() { return RetainPtr<CFX_DIBitmap>(); } bool RenderDeviceDriverIface::ContinueDIBits(CFX_ImageRenderer* handle, PauseIndicatorIface* pPause) { return false; }
+ show +
62
63
64
65
66
67
bool RenderDeviceDriverIface::DrawDeviceText(int nChars, const TextCharPos* pCharPos, CFX_Font* pFont, const CFX_Matrix& mtObject2Device, float font_size, uint32_t color) {
+ show +
68
69
70
71
72
73
74
75
76
77
return false; } int RenderDeviceDriverIface::GetDriverType() const { return 0; } void RenderDeviceDriverIface::ClearDriver() {} bool RenderDeviceDriverIface::DrawShading(const CPDF_ShadingPattern* pPattern,

[CVE-2023-40093_1.diff] cfpf_skiafont.cpp #4
- rtBBox.left = FPF_EM_ADJUST(x_ppem, cbox.xMin); - rtBBox.right = FPF_EM_ADJUST(x_ppem, cbox.xMax); - rtBBox.top = FPF_EM_ADJUST(y_ppem, cbox.yMax); - rtBBox.bottom = FPF_EM_ADJUST(y_ppem, cbox.yMin); + rtBBox.left = static_cast<int32_t>(FPF_EM_ADJUST(x_ppem, cbox.xMin)); + rtBBox.right = static_cast<int32_t>(FPF_EM_ADJUST(x_ppem, cbox.xMax)); + rtBBox.top = static_cast<int32_t>(FPF_EM_ADJUST(y_ppem, cbox.yMax)); + rtBBox.bottom = static_cast<int32_t>(FPF_EM_ADJUST(y_ppem, cbox.yMin));
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/android/cfpf_skiafont.cpp
86
87
88
89
90
91
92
93
94
95
} FT_Glyph glyph; if (FT_Get_Glyph(GetFaceRec()->glyph, &glyph)) { FT_Set_Pixel_Sizes(GetFaceRec(), 0, 64); return false; } FT_BBox cbox; FT_Glyph_Get_CBox(glyph, FT_GLYPH_BBOX_PIXELS, &cbox); int32_t x_ppem = GetFaceRec()->size->metrics.x_ppem; int32_t y_ppem = GetFaceRec()->size->metrics.y_ppem;
+ show +
96
97
98
99
rtBBox.left = FPF_EM_ADJUST(x_ppem, cbox.xMin); rtBBox.right = FPF_EM_ADJUST(x_ppem, cbox.xMax); rtBBox.top = FPF_EM_ADJUST(y_ppem, cbox.yMax); rtBBox.bottom = FPF_EM_ADJUST(y_ppem, cbox.yMin);
+ show +
100
101
102
103
104
105
106
107
108
109
rtBBox.top = std::min(rtBBox.top, GetAscent()); rtBBox.bottom = std::max(rtBBox.bottom, GetDescent()); FT_Done_Glyph(glyph); return FT_Set_Pixel_Sizes(GetFaceRec(), 0, 64) == 0; } if (FT_Load_Glyph(GetFaceRec(), iGlyphIndex, FT_LOAD_NO_SCALE | FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { return false; } rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()),

[CVE-2023-40093_1.diff] cfpf_skiafont.cpp #5
- rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Glyph_HoriBearingX(GetFaceRec())); - rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Glyph_HoriBearingY(GetFaceRec())); - rtBBox.right = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Glyph_HoriBearingX(GetFaceRec()) + - FXFT_Get_Glyph_Width(GetFaceRec())); - rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Glyph_HoriBearingY(GetFaceRec()) - - FXFT_Get_Glyph_Height(GetFaceRec())); + rtBBox.left = static_cast<int32_t>( + FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Glyph_HoriBearingX(GetFaceRec()))); + rtBBox.bottom = static_cast<int32_t>( + FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Glyph_HoriBearingY(GetFaceRec()))); + rtBBox.right = static_cast<int32_t>( + FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Glyph_HoriBearingX(GetFaceRec()) + + FXFT_Get_Glyph_Width(GetFaceRec()))); + rtBBox.top = static_cast<int32_t>( + FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Glyph_HoriBearingY(GetFaceRec()) - + FXFT_Get_Glyph_Height(GetFaceRec())));
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/android/cfpf_skiafont.cpp
99
100
101
102
103
104
105
106
107
108
rtBBox.bottom = FPF_EM_ADJUST(y_ppem, cbox.yMin); rtBBox.top = std::min(rtBBox.top, GetAscent()); rtBBox.bottom = std::max(rtBBox.bottom, GetDescent()); FT_Done_Glyph(glyph); return FT_Set_Pixel_Sizes(GetFaceRec(), 0, 64) == 0; } if (FT_Load_Glyph(GetFaceRec(), iGlyphIndex, FT_LOAD_NO_SCALE | FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { return false; }
+ show +
109
110
111
112
113
114
115
116
117
118
rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Glyph_HoriBearingX(GetFaceRec())); rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Glyph_HoriBearingY(GetFaceRec())); rtBBox.right = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Glyph_HoriBearingX(GetFaceRec()) + FXFT_Get_Glyph_Width(GetFaceRec())); rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Glyph_HoriBearingY(GetFaceRec()) - FXFT_Get_Glyph_Height(GetFaceRec()));
+ show +
119
120
121
122
123
124
125
126
127
128
return true; } bool CFPF_SkiaFont::GetBBox(FX_RECT& rtBBox) { if (!m_Face) { return false; } rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Face_xMin(GetFaceRec())); rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()),

[CVE-2023-40093_1.diff] cfpf_skiafont.cpp #6
- rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Face_xMin(GetFaceRec())); - rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Face_yMin(GetFaceRec())); - rtBBox.right = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Face_xMax(GetFaceRec())); - rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), - FXFT_Get_Face_yMax(GetFaceRec())); + rtBBox.left = + static_cast<int32_t>(FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Face_xMin(GetFaceRec()))); + rtBBox.top = + static_cast<int32_t>(FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Face_yMin(GetFaceRec()))); + rtBBox.right = + static_cast<int32_t>(FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Face_xMax(GetFaceRec()))); + rtBBox.bottom = + static_cast<int32_t>(FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), + FXFT_Get_Face_yMax(GetFaceRec())));
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/android/cfpf_skiafont.cpp
116
117
118
119
120
121
122
123
124
125
rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Glyph_HoriBearingY(GetFaceRec()) - FXFT_Get_Glyph_Height(GetFaceRec())); return true; } bool CFPF_SkiaFont::GetBBox(FX_RECT& rtBBox) { if (!m_Face) { return false; }
+ show +
126
127
128
129
130
131
132
133
rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Face_xMin(GetFaceRec())); rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Face_yMin(GetFaceRec())); rtBBox.right = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Face_xMax(GetFaceRec())); rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Face_yMax(GetFaceRec()));
+ show +
134
135
136
137
138
139
140
141
142
143
return true; } int32_t CFPF_SkiaFont::GetHeight() const { if (!m_Face) return 0; return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(GetFaceRec()), FXFT_Get_Face_Height(GetFaceRec())); }

[CVE-2023-40093_1.diff] cfpf_skiafontmgr.cpp #5
-uint32_t FPF_GetHashCode_StringA(const char* pStr, int32_t iLength) { - if (!pStr) - return 0; - if (iLength < 0) - iLength = strlen(pStr); - const char* pStrEnd = pStr + iLength; - uint32_t uHashCode = 0; - while (pStr < pStrEnd) - uHashCode = 31 * uHashCode + tolower(*pStr++); - return uHashCode; -} -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/android/cfpf_skiafontmgr.cpp
58
59
60
61
62
63
64
65
66
67
const FPF_SKIAFONTMAP* pEnd = skFontMap + length; const FPF_SKIAFONTMAP* pFontMap = std::lower_bound( skFontMap, pEnd, dwHash, [](const FPF_SKIAFONTMAP& item, uint32_t hash) { return item.dwFamily < hash; }); if (pFontMap < pEnd && pFontMap->dwFamily == dwHash) return pFontMap->dwSubSt; return 0; }
+ show +
68
69
70
71
72
73
74
75
76
77
uint32_t FPF_GetHashCode_StringA(const char* pStr, int32_t iLength) { if (!pStr) return 0; if (iLength < 0) iLength = strlen(pStr); const char* pStrEnd = pStr + iLength; uint32_t uHashCode = 0; while (pStr < pStrEnd) uHashCode = 31 * uHashCode + tolower(*pStr++); return uHashCode;
+ show +
78
79
80
81
82
83
84
85
86
87
} enum FPF_SKIACHARSET { FPF_SKIACHARSET_Ansi = 1 << 0, FPF_SKIACHARSET_Default = 1 << 1, FPF_SKIACHARSET_Symbol = 1 << 2, FPF_SKIACHARSET_ShiftJIS = 1 << 3, FPF_SKIACHARSET_Korean = 1 << 4, FPF_SKIACHARSET_Johab = 1 << 5, FPF_SKIACHARSET_GB2312 = 1 << 6,

[CVE-2023-40093_1.diff] fx_agg_driver.cpp #4
+namespace pdfium { -void RgbByteOrderSetPixel(const RetainPtr<CFX_DIBitmap>& pBitmap, - int x, - int y, - uint32_t argb) { - if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) - return; - - uint8_t* pos = pBitmap->GetBuffer() + y * pBitmap->GetPitch() + - x * pBitmap->GetBPP() / 8; - if (pBitmap->GetFormat() == FXDIB_Argb) { - FXARGB_SETRGBORDERDIB(pos, argb); - return; - } - - int alpha = FXARGB_A(argb); - pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; - pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255; - pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255; -} -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/agg/fx_agg_driver.cpp
39
40
41
42
43
44
45
46
47
48
namespace { const float kMaxPos = 32000.0f; CFX_PointF HardClip(const CFX_PointF& pos) { return CFX_PointF(pdfium::clamp(pos.x, -kMaxPos, kMaxPos), pdfium::clamp(pos.y, -kMaxPos, kMaxPos)); }
+ show +
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
void RgbByteOrderSetPixel(const RetainPtr<CFX_DIBitmap>& pBitmap, int x, int y, uint32_t argb) { if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) return; uint8_t* pos = pBitmap->GetBuffer() + y * pBitmap->GetPitch() + x * pBitmap->GetBPP() / 8; if (pBitmap->GetFormat() == FXDIB_Argb) { FXARGB_SETRGBORDERDIB(pos, argb); return; } int alpha = FXARGB_A(argb); pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255; pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255;
+ show +
67
68
69
70
71
72
73
74
75
76
} void RgbByteOrderCompositeRect(const RetainPtr<CFX_DIBitmap>& pBitmap, int left, int top, int width, int height, FX_ARGB argb) { int src_alpha = FXARGB_A(argb); if (src_alpha == 0)

[CVE-2023-40093_1.diff] fx_agg_driver.cpp #12
-constexpr int kAlternateOrWindingFillModeMask = - FXFILL_ALTERNATE | FXFILL_WINDING; - -int GetAlternateOrWindingFillMode(int fill_mode) { - return fill_mode & kAlternateOrWindingFillModeMask; -} - -bool IsAlternateOrWindingFillMode(int fill_mode) { - return !!GetAlternateOrWindingFillMode(fill_mode); -} - -agg::filling_rule_e GetAlternateOrWindingFillType(int fill_mode) { - return GetAlternateOrWindingFillMode(fill_mode) == FXFILL_WINDING +agg::filling_rule_e GetAlternateOrWindingFillType( + const CFX_FillRenderOptions& fill_options) { + return fill_options.fill_type == CFX_FillRenderOptions::FillType::kWinding +RetainPtr<CFX_DIBitmap> GetClipMaskFromRegion(const CFX_ClipRgn* r) { + return (r && r->GetType() == CFX_ClipRgn::kMaskF) ? r->GetMask() : nullptr; +} + +FX_RECT GetClipBoxFromRegion(const RetainPtr<CFX_DIBitmap>& device, + const CFX_ClipRgn* region) { + if (region) + return region->GetBox(); + return FX_RECT(0, 0, device->GetWidth(), device->GetHeight()); +} + + CFX_Renderer(const RetainPtr<CFX_DIBitmap>& pDevice, + const RetainPtr<CFX_DIBitmap>& pBackdropDevice, + const CFX_ClipRgn* pClipRgn, + uint32_t color, + bool bFullCover, + bool bRgbByteOrder); + + template <class Scanline> + void render(const Scanline& sl); + + private: + using CompositeSpanFunc = void ( + CFX_Renderer::*)(uint8_t*, int, int, int, uint8_t*, int, int, uint8_t*); +
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/agg/fx_agg_driver.cpp
310
311
312
313
314
315
316
317
318
319
return; } agg::conv_stroke<agg::path_storage> stroke(*path_data); stroke.line_join(join); stroke.line_cap(cap); stroke.miter_limit(pGraphState->m_MiterLimit); stroke.width(width); rasterizer->add_path_transformed(stroke, pObject2Device); }
+ show +
320
321
322
323
324
325
326
327
328
329
330
331
332
constexpr int kAlternateOrWindingFillModeMask = FXFILL_ALTERNATE | FXFILL_WINDING; int GetAlternateOrWindingFillMode(int fill_mode) { return fill_mode & kAlternateOrWindingFillModeMask; } bool IsAlternateOrWindingFillMode(int fill_mode) { return !!GetAlternateOrWindingFillMode(fill_mode); } agg::filling_rule_e GetAlternateOrWindingFillType(int fill_mode) { return GetAlternateOrWindingFillMode(fill_mode) == FXFILL_WINDING
+ show +
333
334
335
336
337
338
339
340
341
342
? agg::fill_non_zero : agg::fill_even_odd; } class CFX_Renderer { public: // Needed for agg caller void prepare(unsigned) {} void CompositeSpan(uint8_t* dest_scan,

[CVE-2023-40093_1.diff] fx_agg_driver.cpp #16
- uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan); - - void CompositeSpanCMYK(uint8_t* dest_scan, - int Bpp, - int span_left, - int span_len, - uint8_t* cover_scan, - int clip_left, - int clip_right, - uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan); - - bool Init(const RetainPtr<CFX_DIBitmap>& pDevice, - const RetainPtr<CFX_DIBitmap>& pBackdropDevice, - const CFX_ClipRgn* pClipRgn, - uint32_t color, - bool bFullCover, - bool bRgbByteOrder); - - template <class Scanline> - void render(const Scanline& sl); - - private: - void (CFX_Renderer::*composite_span)(uint8_t*, - int, - int, - int, - uint8_t*, - int, - int, - uint8_t*, - uint8_t*); + uint8_t* clip_scan);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/agg/fx_agg_driver.cpp
380
381
382
383
384
385
386
387
388
389
uint8_t* clip_scan, uint8_t* dest_extra_alpha_scan); void CompositeSpanRGB(uint8_t* dest_scan, int Bpp, int span_left, int span_len, uint8_t* cover_scan, int clip_left, int clip_right,
+ show +
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
uint8_t* clip_scan, uint8_t* dest_extra_alpha_scan); void CompositeSpanCMYK(uint8_t* dest_scan, int Bpp, int span_left, int span_len, uint8_t* cover_scan, int clip_left, int clip_right, uint8_t* clip_scan, uint8_t* dest_extra_alpha_scan); bool Init(const RetainPtr<CFX_DIBitmap>& pDevice, const RetainPtr<CFX_DIBitmap>& pBackdropDevice, const CFX_ClipRgn* pClipRgn, uint32_t color, bool bFullCover, bool bRgbByteOrder); template <class Scanline> void render(const Scanline& sl); private: void (CFX_Renderer::*composite_span)(uint8_t*, int, int, int, uint8_t*, int, int, uint8_t*, uint8_t*);
+ show +
423
424
425
426
427
428
429
430
431
432
void CompositeSpan1bppHelper(uint8_t* dest_scan, int col_start, int col_end, const uint8_t* cover_scan, const uint8_t* clip_scan, int span_left); inline int GetSrcAlpha(const uint8_t* clip_scan, int col) const { return clip_scan ? m_Alpha * clip_scan[col] / 255 : m_Alpha;

[CVE-2023-40093_1.diff] fx_agg_driver.cpp #18
+ static CompositeSpanFunc GetCompositeSpanFunc( + const RetainPtr<CFX_DIBitmap>& device) { + if (device->GetBPP() == 1) + return &CFX_Renderer::CompositeSpan1bpp; + if (device->GetBPP() == 8) + return &CFX_Renderer::CompositeSpanGray; + if (device->GetFormat() == FXDIB_Format::kArgb) + return &CFX_Renderer::CompositeSpanARGB; + return &CFX_Renderer::CompositeSpanRGB; + } + - uint32_t m_Color; - bool m_bFullCover; - bool m_bRgbByteOrder; - FX_RECT m_ClipBox; - RetainPtr<CFX_DIBitmap> m_pBackdropDevice; - RetainPtr<CFX_DIBitmap> m_pClipMask; - RetainPtr<CFX_DIBitmap> m_pDevice; + const uint32_t m_Color; + const bool m_bFullCover; + const bool m_bRgbByteOrder; + const FX_RECT m_ClipBox; + RetainPtr<CFX_DIBitmap> const m_pBackdropDevice; + RetainPtr<CFX_DIBitmap> const m_pClipMask; + RetainPtr<CFX_DIBitmap> const m_pDevice; + const CompositeSpanFunc m_CompositeSpanFunc;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/agg/fx_agg_driver.cpp
446
447
448
449
450
451
452
453
454
455
inline int GetColEnd(int span_left, int span_len, int clip_right) const { return span_left + span_len < clip_right ? span_len : clip_right - span_left; } int m_Alpha; int m_Red; int m_Green; int m_Blue; int m_Gray;
+ show +
456
457
458
459
460
461
462
uint32_t m_Color; bool m_bFullCover; bool m_bRgbByteOrder; FX_RECT m_ClipBox; RetainPtr<CFX_DIBitmap> m_pBackdropDevice; RetainPtr<CFX_DIBitmap> m_pClipMask; RetainPtr<CFX_DIBitmap> m_pDevice;
+ show +
463
464
465
466
467
468
469
470
471
472
UnownedPtr<const CFX_ClipRgn> m_pClipRgn; }; void CFX_Renderer::CompositeSpan(uint8_t* dest_scan, uint8_t* backdrop_scan, int Bpp, bool bDestAlpha, int span_left, int span_len, uint8_t* cover_scan,

[CVE-2023-40093_1.diff] fx_agg_driver.cpp #20
- uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan) { - ASSERT(!m_bRgbByteOrder); - ASSERT(!m_pDevice->IsCmykImage()); + uint8_t* clip_scan) { + DCHECK(!m_bRgbByteOrder);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/agg/fx_agg_driver.cpp
608
609
610
611
612
613
614
615
616
617
span_left); } void CFX_Renderer::CompositeSpan1bpp(uint8_t* dest_scan, int Bpp, int span_left, int span_len, uint8_t* cover_scan, int clip_left, int clip_right,
+ show +
618
619
620
621
uint8_t* clip_scan, uint8_t* dest_extra_alpha_scan) { ASSERT(!m_bRgbByteOrder); ASSERT(!m_pDevice->IsCmykImage());
+ show +
622
623
624
625
626
627
628
629
630
631
int col_start = GetColStart(span_left, clip_left); int col_end = GetColEnd(span_left, span_len, clip_right); dest_scan += col_start / 8; CompositeSpan1bppHelper(dest_scan, col_start, col_end, cover_scan, clip_scan, span_left); } void CFX_Renderer::CompositeSpanGray(uint8_t* dest_scan, int Bpp, int span_left,

[CVE-2023-40093_1.diff] fx_agg_driver.cpp #24
- if (Bpp == 3 && dest_extra_alpha_scan) { - for (int col = col_start; col < col_end; col++) { - int src_alpha = m_bFullCover ? GetSrcAlpha(clip_scan, col) - : GetSourceAlpha(cover_scan, clip_scan, col); - if (src_alpha) { - if (src_alpha == 255) { - *dest_scan++ = static_cast<uint8_t>(m_Blue); - *dest_scan++ = static_cast<uint8_t>(m_Green); - *dest_scan++ = static_cast<uint8_t>(m_Red); - *dest_extra_alpha_scan++ = static_cast<uint8_t>(m_Alpha); - continue; - } - uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - - (*dest_extra_alpha_scan) * src_alpha / 255; - *dest_extra_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); - dest_scan++; - continue; - } - dest_extra_alpha_scan++; - dest_scan += Bpp; - } - return; - }
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/agg/fx_agg_driver.cpp
775
776
777
778
779
780
781
782
783
784
dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); dest_scan += Bpp - 2; continue; } } dest_scan += Bpp; } return; }
+ show +
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
if (Bpp == 3 && dest_extra_alpha_scan) { for (int col = col_start; col < col_end; col++) { int src_alpha = m_bFullCover ? GetSrcAlpha(clip_scan, col) : GetSourceAlpha(cover_scan, clip_scan, col); if (src_alpha) { if (src_alpha == 255) { *dest_scan++ = static_cast<uint8_t>(m_Blue); *dest_scan++ = static_cast<uint8_t>(m_Green); *dest_scan++ = static_cast<uint8_t>(m_Red); *dest_extra_alpha_scan++ = static_cast<uint8_t>(m_Alpha); continue; } uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - (*dest_extra_alpha_scan) * src_alpha / 255; *dest_extra_alpha_scan++ = dest_alpha; int alpha_ratio = src_alpha * 255 / dest_alpha; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); dest_scan++; continue; } dest_extra_alpha_scan++; dest_scan += Bpp; } return;
+ show +
813
814
815
816
817
818
819
820
821
822
} for (int col = col_start; col < col_end; col++) { int src_alpha = m_bFullCover ? GetSrcAlpha(clip_scan, col) : GetSourceAlpha(cover_scan, clip_scan, col); if (src_alpha) { if (src_alpha == 255) { if (Bpp == 4) { *(uint32_t*)dest_scan = m_Color; } else if (Bpp == 3) { *dest_scan++ = m_Blue;

[CVE-2023-40093_1.diff] fx_skia_device.cpp #4
- path.dump(&stream, false, false); - std::unique_ptr<char, FxFreeDeleter> storage; - storage.reset(FX_Alloc(char, stream.bytesWritten())); - stream.copyTo(storage.get()); - printf("%.*s", (int)stream.bytesWritten(), storage.get()); + path.dump(&stream, false); + DataVector<char> storage(stream.bytesWritten()); + stream.copyTo(storage.data()); + printf("%.*s", static_cast<int>(storage.size()), storage.data());
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/skia/fx_skia_device.cpp
180
181
182
183
184
185
186
187
188
189
} } #endif // SHOW_SKIA_PATH void DebugShowSkiaPath(const SkPath& path) { #if SHOW_SKIA_PATH #if SHOW_SKIA_PATH_SHORTHAND printf(" **\n"); #else SkDynamicMemoryWStream stream;
+ show +
190
191
192
193
194
path.dump(&stream, false, false); std::unique_ptr<char, FxFreeDeleter> storage; storage.reset(FX_Alloc(char, stream.bytesWritten())); stream.copyTo(storage.get()); printf("%.*s", (int)stream.bytesWritten(), storage.get());
+ show +
195
196
197
198
199
200
201
202
203
204
#endif // SHOW_SKIA_PATH_SHORTHAND #endif // SHOW_SKIA_PATH } void DebugShowCanvasClip(CFX_SkiaDeviceDriver* driver, const SkCanvas* canvas) { #if SHOW_SKIA_PATH SkMatrix matrix = canvas->getTotalMatrix(); SkScalar m[9]; matrix.get9(m); printf("matrix (%g,%g,%g) (%g,%g,%g) (%g,%g,%g)\n", m[0], m[1], m[2], m[3],

[CVE-2023-40093_1.diff] fx_skia_device.cpp #13
-#endif // _SKIA_SUPPORT_ - -#ifdef _SKIA_SUPPORT_PATHS_ - case FXDC_PIXEL_WIDTH: - return m_pBitmap->GetWidth(); - case FXDC_PIXEL_HEIGHT: - return m_pBitmap->GetHeight(); - case FXDC_BITS_PIXEL: - return m_pBitmap->GetBPP(); - case FXDC_HORZ_SIZE: - case FXDC_VERT_SIZE: - return 0; - case FXDC_RENDER_CAPS: { - int flags = FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE | - FXRC_BLEND_MODE | FXRC_SOFT_CLIP | FXRC_SHADING; - if (m_pBitmap->HasAlpha()) { - flags |= FXRC_ALPHA_OUTPUT; - } else if (m_pBitmap->IsAlphaMask()) { - if (m_pBitmap->GetBPP() == 1) { - flags |= FXRC_BITMASK_OUTPUT; - } else { - flags |= FXRC_BYTEMASK_OUTPUT; - } - } - if (m_pBitmap->IsCmykImage()) { - flags |= FXRC_CMYK_OUTPUT; - } - return flags; - } -#endif // _SKIA_SUPPORT_PATHS_ -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/skia/fx_skia_device.cpp
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
return m_pCanvas->imageInfo().height(); case FXDC_BITS_PIXEL: return 32; case FXDC_HORZ_SIZE: case FXDC_VERT_SIZE: return 0; case FXDC_RENDER_CAPS: return FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE | FXRC_BLEND_MODE | FXRC_SOFT_CLIP | FXRC_ALPHA_OUTPUT | FXRC_FILLSTROKE_PATH | FXRC_SHADING;
+ show +
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
#endif // _SKIA_SUPPORT_ #ifdef _SKIA_SUPPORT_PATHS_ case FXDC_PIXEL_WIDTH: return m_pBitmap->GetWidth(); case FXDC_PIXEL_HEIGHT: return m_pBitmap->GetHeight(); case FXDC_BITS_PIXEL: return m_pBitmap->GetBPP(); case FXDC_HORZ_SIZE: case FXDC_VERT_SIZE: return 0; case FXDC_RENDER_CAPS: { int flags = FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE | FXRC_BLEND_MODE | FXRC_SOFT_CLIP | FXRC_SHADING; if (m_pBitmap->HasAlpha()) { flags |= FXRC_ALPHA_OUTPUT; } else if (m_pBitmap->IsAlphaMask()) { if (m_pBitmap->GetBPP() == 1) { flags |= FXRC_BITMASK_OUTPUT; } else { flags |= FXRC_BYTEMASK_OUTPUT; } } if (m_pBitmap->IsCmykImage()) { flags |= FXRC_CMYK_OUTPUT; } return flags; } #endif // _SKIA_SUPPORT_PATHS_
+ show +
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
default: NOTREACHED(); return 0; } } void CFX_SkiaDeviceDriver::SaveState() { m_pCache->DebugCheckClip(); if (!m_pCache->ClipSave())

[CVE-2023-40093_1.diff] fx_skia_device.cpp #29
- std::unique_ptr<CFX_ImageRenderer> dummy; - return StartDIBits(pSource, 0xFF, argb, m, FXDIB_ResampleOptions(), &dummy, - blend_type); -#endif // _SKIA_SUPPORT_ -#ifdef _SKIA_SUPPORT_PATHS_ - if (dest_width == pSource->GetWidth() && - dest_height == pSource->GetHeight()) { - FX_RECT rect(0, 0, dest_width, dest_height); - return SetDIBits(pSource, argb, rect, dest_left, dest_top, blend_type); - } - Flush(); - FX_RECT dest_rect(dest_left, dest_top, dest_left + dest_width, - dest_top + dest_height); - dest_rect.Normalize(); - FX_RECT dest_clip = dest_rect; - dest_clip.Intersect(*pClipRect); - CFX_BitmapComposer composer; - composer.Compose(m_pBitmap, m_pClipRgn.get(), 255, argb, dest_clip, false, - false, false, m_bRgbByteOrder, blend_type); - dest_clip.Offset(-dest_rect.left, -dest_rect.top); - CFX_ImageStretcher stretcher(&composer, pSource, dest_width, dest_height, - dest_clip, options); - if (stretcher.Start()) - stretcher.Continue(nullptr); - return true; -#endif // _SKIA_SUPPORT_PATHS_ + // `bNoSmoothing` prevents linear sampling when rendering bitmaps. + FXDIB_ResampleOptions sampling_options; + sampling_options.bNoSmoothing = true; + + return StartDIBitsSkia( + pSource, FX_RECT(0, 0, pSource->GetWidth(), pSource->GetHeight()), 0xFF, + argb, m, sampling_options, blend_type);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/skia/fx_skia_device.cpp
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
m_pCache->FlushForDraw(); if (!m_pBitmap->GetBuffer()) return true; CFX_Matrix m = CFX_RenderDevice::GetFlipMatrix(dest_width, dest_height, dest_left, dest_top); SkAutoCanvasRestore scoped_save_restore(m_pCanvas, /*doSave=*/true); SkRect skClipRect = SkRect::MakeLTRB(pClipRect->left, pClipRect->bottom, pClipRect->right, pClipRect->top); m_pCanvas->clipRect(skClipRect, SkClipOp::kIntersect, true);
+ show +
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
std::unique_ptr<CFX_ImageRenderer> dummy; return StartDIBits(pSource, 0xFF, argb, m, FXDIB_ResampleOptions(), &dummy, blend_type); #endif // _SKIA_SUPPORT_ #ifdef _SKIA_SUPPORT_PATHS_ if (dest_width == pSource->GetWidth() && dest_height == pSource->GetHeight()) { FX_RECT rect(0, 0, dest_width, dest_height); return SetDIBits(pSource, argb, rect, dest_left, dest_top, blend_type); } Flush(); FX_RECT dest_rect(dest_left, dest_top, dest_left + dest_width, dest_top + dest_height); dest_rect.Normalize(); FX_RECT dest_clip = dest_rect; dest_clip.Intersect(*pClipRect); CFX_BitmapComposer composer; composer.Compose(m_pBitmap, m_pClipRgn.get(), 255, argb, dest_clip, false, false, false, m_bRgbByteOrder, blend_type); dest_clip.Offset(-dest_rect.left, -dest_rect.top); CFX_ImageStretcher stretcher(&composer, pSource, dest_width, dest_height, dest_clip, options); if (stretcher.Start()) stretcher.Continue(nullptr); return true; #endif // _SKIA_SUPPORT_PATHS_
+ show +
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
} bool CFX_SkiaDeviceDriver::StartDIBits( const RetainPtr<CFX_DIBBase>& pSource, int bitmap_alpha, uint32_t argb, const CFX_Matrix& matrix, const FXDIB_ResampleOptions& options, std::unique_ptr<CFX_ImageRenderer>* handle, BlendMode blend_type) {

[CVE-2023-40093_1.diff] cfx_cmyk_to_srgb.cpp #3
+#include "third_party/base/check_op.h" - ASSERT(c1 == FXSYS_roundf(c * 255)); - ASSERT(m1 == FXSYS_roundf(m * 255)); - ASSERT(y1 == FXSYS_roundf(y * 255)); - ASSERT(k1 == FXSYS_roundf(k * 255)); + DCHECK_EQ(c1, FXSYS_roundf(c * 255)); + DCHECK_EQ(m1, FXSYS_roundf(m * 255)); + DCHECK_EQ(y1, FXSYS_roundf(y * 255)); + DCHECK_EQ(k1, FXSYS_roundf(k * 255));
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_cmyk_to_srgb.cpp
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
// 0.5f gives different results (1 instead of 0) for one value, 0.0019607842. // That value is close to the cusp but zero is the correct answer, and // getting the same answer as before is desirable. // All floats from 0.0 to 1.0 were tested and now give the same results. const float rounding_offset = 0.49999997f; uint8_t c1 = static_cast<int>(c * 255.f + rounding_offset); uint8_t m1 = static_cast<int>(m * 255.f + rounding_offset); uint8_t y1 = static_cast<int>(y * 255.f + rounding_offset); uint8_t k1 = static_cast<int>(k * 255.f + rounding_offset);
+ show +
1743
1744
1745
1746
ASSERT(c1 == FXSYS_roundf(c * 255)); ASSERT(m1 == FXSYS_roundf(m * 255)); ASSERT(y1 == FXSYS_roundf(y * 255)); ASSERT(k1 == FXSYS_roundf(k * 255));
+ show +
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
uint8_t r; uint8_t g; uint8_t b; std::tie(r, g, b) = AdobeCMYK_to_sRGB1(c1, m1, y1, k1); // Multiply by a constant rather than dividing because division is much // more expensive. return std::make_tuple(r * (1.0f / 255), g * (1.0f / 255), b * (1.0f / 255)); }

[CVE-2023-40093_1.diff] cfx_dibbase.cpp #16
- if (cmyk) { - ConvertBuffer_32bppCmyk2Rgb32(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top); - } else { - ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, pSrcBitmap, - src_left, src_top); - } + ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, pSrcBitmap, + src_left, src_top);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_dibbase.cpp
692
693
694
695
696
697
698
699
700
701
if (pSrcBitmap->GetPalette()) { ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top); } else { ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top); } return true; case 24: case 32:
+ show +
702
703
704
705
706
707
if (cmyk) { ConvertBuffer_32bppCmyk2Rgb32(dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top); } else { ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top);
+ show +
708
709
710
711
712
713
714
715
716
717
} return true; default: return false; } } } // namespace CFX_DIBBase::CFX_DIBBase()

[CVE-2023-40093_1.diff] cfx_imagetransformer.h #2
- struct BicubicData { - int res_x; - int res_y; - int src_col_l; - int src_row_l; - int src_col_r; - int src_row_r; - int pos_pixel[8]; - int u_w[4]; - int v_w[4]; - }; - - struct DownSampleData { - int src_col; - int src_row; - }; -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_imagetransformer.h
24
25
26
27
28
29
30
31
32
33
int res_x; int res_y; int src_col_l; int src_row_l; int src_col_r; int src_row_r; int row_offset_l; int row_offset_r; };
+ show +
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
struct BicubicData { int res_x; int res_y; int src_col_l; int src_row_l; int src_col_r; int src_row_r; int pos_pixel[8]; int u_w[4]; int v_w[4]; }; struct DownSampleData { int src_col; int src_row; };
+ show +
50
51
52
53
54
55
56
57
58
59
struct CalcData { CFX_DIBitmap* bitmap; const CFX_Matrix& matrix; const uint8_t* buf; uint32_t pitch; }; CFX_ImageTransformer(const RetainPtr<CFX_DIBBase>& pSrc, const CFX_Matrix& matrix,

[CVE-2023-40093_1.diff] cfx_imagetransformer.h #4
- void CalcMask(const CalcData& cdata); - void CalcAlpha(const CalcData& cdata); - void CalcMono(const CalcData& cdata, FXDIB_Format format); - void CalcColor(const CalcData& cdata, FXDIB_Format format, int Bpp); + void CalcAlpha(const CalcData& calc_data); + void CalcMono(const CalcData& calc_data); + void CalcColor(const CalcData& calc_data, FXDIB_Format format, int Bpp); - bool IsBilinear() const; - bool IsBiCubic() const; - - RetainPtr<CFX_DIBBase> const m_pSrc; + RetainPtr<const CFX_DIBBase> const m_pSrc;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_imagetransformer.h
70
71
72
73
74
75
76
77
78
79
enum StretchType { kNone, kNormal, kRotate, kOther, }; void ContinueRotate(PauseIndicatorIface* pPause); void ContinueOther(PauseIndicatorIface* pPause);
+ show +
80
81
82
83
84
85
86
87
88
void CalcMask(const CalcData& cdata); void CalcAlpha(const CalcData& cdata); void CalcMono(const CalcData& cdata, FXDIB_Format format); void CalcColor(const CalcData& cdata, FXDIB_Format format, int Bpp); bool IsBilinear() const; bool IsBiCubic() const; RetainPtr<CFX_DIBBase> const m_pSrc;
+ show +
89
90
91
92
93
94
95
96
97
98
const CFX_Matrix m_matrix; FX_RECT m_StretchClip; FX_RECT m_result; CFX_Matrix m_dest2stretch; std::unique_ptr<CFX_ImageStretcher> m_Stretcher; CFX_BitmapStorer m_Storer; const FXDIB_ResampleOptions m_ResampleOptions; StretchType m_type = kNone; };

[CVE-2023-40093_1.diff] cfx_dibitmap.cpp #15
- } else { - if (GetFormat() == FXDIB_Argb) { - if (pSrcClone->GetBPP() == 1) - return false; + return true; + } - for (int row = 0; row < m_Height; row++) { - uint8_t* dest_scan = m_pBuffer.Get() + m_Pitch * row + 3; - uint8_t* src_scan = - pSrcClone->m_pBuffer.Get() + pSrcClone->m_Pitch * row; - for (int col = 0; col < m_Width; col++) { - *dest_scan = (*dest_scan) * src_scan[col] / 255; - dest_scan += 4; - } - } - } else { - m_pAlphaMask->MultiplyAlpha(pSrcClone); + DCHECK_EQ(GetFormat(), FXDIB_Format::kArgb); + if (pSrcClone->GetBPP() == 1) + return false; + + for (int row = 0; row < m_Height; row++) { + uint8_t* dest_scan = m_pBuffer.Get() + m_Pitch * row + 3; + uint8_t* src_scan = pSrcClone->m_pBuffer.Get() + pSrcClone->m_Pitch * row; + for (int col = 0; col < m_Width; col++) { + *dest_scan = (*dest_scan) * src_scan[col] / 255; + dest_scan += 4;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_dibitmap.cpp
462
463
464
465
466
467
468
469
470
471
if (!((1 << (7 - col % 8)) & src_scan[col / 8])) dest_scan[col] = 0; } } else { for (int col = 0; col < m_Width; col++) { *dest_scan = (*dest_scan) * src_scan[col] / 255; dest_scan++; } } }
+ show +
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
} else { if (GetFormat() == FXDIB_Argb) { if (pSrcClone->GetBPP() == 1) return false; for (int row = 0; row < m_Height; row++) { uint8_t* dest_scan = m_pBuffer.Get() + m_Pitch * row + 3; uint8_t* src_scan = pSrcClone->m_pBuffer.Get() + pSrcClone->m_Pitch * row; for (int col = 0; col < m_Width; col++) { *dest_scan = (*dest_scan) * src_scan[col] / 255; dest_scan += 4; } } } else { m_pAlphaMask->MultiplyAlpha(pSrcClone);
+ show +
488
489
490
491
492
493
494
495
496
497
} } return true; } bool CFX_DIBitmap::MultiplyAlpha(int alpha) { if (!m_pBuffer) return false; switch (GetFormat()) {

[CVE-2023-40093_1.diff] cfx_dibitmap.cpp #33
- if (bArgb) { - for (int col = 0; col < width; col++) { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, ArgbEncode(src_alpha, color_p[2], - color_p[1], color_p[0])); - dest_scan += 4; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[0], alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[1], alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[2], alpha_ratio); - dest_scan++; - *dest_scan++ = dest_alpha; + for (int col = 0; col < width; col++) { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, ArgbEncode(src_alpha, color_p[2], color_p[1], + color_p[0])); + dest_scan += 4; + continue; - } else { - uint8_t* dest_scan_alpha = - m_pAlphaMask->GetWritableScanline(row) + rect.left; - for (int col = 0; col < width; col++) { - uint8_t back_alpha = *dest_scan_alpha; - if (back_alpha == 0) { - *dest_scan_alpha++ = src_alpha; - memcpy(dest_scan, color_p, Bpp); - dest_scan += Bpp; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_scan_alpha++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - for (int comps = 0; comps < Bpp; comps++) { - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, color_p[comps], alpha_ratio); - dest_scan++; - } - } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[0], alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[1], alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[2], alpha_ratio); + dest_scan++; + *dest_scan++ = dest_alpha;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_dibitmap.cpp
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
*dest_scan++ = color_p[1]; *dest_scan++ = color_p[2]; } } } return true; } for (int row = rect.top; row < rect.bottom; row++) { uint8_t* dest_scan = m_pBuffer.Get() + row * m_Pitch + rect.left * Bpp; if (bAlpha) {
+ show +
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
if (bArgb) { for (int col = 0; col < width; col++) { uint8_t back_alpha = dest_scan[3]; if (back_alpha == 0) { FXARGB_SETDIB(dest_scan, ArgbEncode(src_alpha, color_p[2], color_p[1], color_p[0])); dest_scan += 4; continue; } uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; int alpha_ratio = src_alpha * 255 / dest_alpha; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[0], alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[1], alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[2], alpha_ratio); dest_scan++; *dest_scan++ = dest_alpha; } } else { uint8_t* dest_scan_alpha = m_pAlphaMask->GetWritableScanline(row) + rect.left; for (int col = 0; col < width; col++) { uint8_t back_alpha = *dest_scan_alpha; if (back_alpha == 0) { *dest_scan_alpha++ = src_alpha; memcpy(dest_scan, color_p, Bpp); dest_scan += Bpp; continue; } uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; *dest_scan_alpha++ = dest_alpha; int alpha_ratio = src_alpha * 255 / dest_alpha; for (int comps = 0; comps < Bpp; comps++) { *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[comps], alpha_ratio); dest_scan++;
+ show +
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
} } } } else { for (int col = 0; col < width; col++) { for (int comps = 0; comps < Bpp; comps++) { if (comps == 3) { *dest_scan++ = 255; continue; }

[CVE-2023-40093_1.diff] cstretchengine.cpp #6
- if (m_DestBpp == 8) { - m_TransMethod = m_bHasAlpha ? TransformMethod::k8BppTo8BppWithAlpha - : TransformMethod::k8BppTo8Bpp; - } else { - m_TransMethod = m_bHasAlpha ? TransformMethod::k8BppToManyBppWithAlpha - : TransformMethod::k8BppToManyBpp; - } + m_TransMethod = m_DestBpp == 8 ? TransformMethod::k8BppTo8Bpp + : TransformMethod::k8BppToManyBpp;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cstretchengine.cpp
284
285
286
287
288
289
290
291
292
293
m_SrcClip.bottom = static_cast<int>(ceil(src_bottom)); FX_RECT src_rect(0, 0, m_SrcWidth, m_SrcHeight); m_SrcClip.Intersect(src_rect); switch (m_SrcBpp) { case 1: m_TransMethod = m_DestBpp == 8 ? TransformMethod::k1BppTo8Bpp : TransformMethod::k1BppToManyBpp; break; case 8:
+ show +
294
295
296
297
298
299
if (m_DestBpp == 8) { m_TransMethod = m_bHasAlpha ? TransformMethod::k8BppTo8BppWithAlpha : TransformMethod::k8BppTo8Bpp; } else { m_TransMethod = m_bHasAlpha ? TransformMethod::k8BppToManyBppWithAlpha : TransformMethod::k8BppToManyBpp;
+ show +
300
301
302
303
304
305
306
307
308
309
} break; default: m_TransMethod = m_bHasAlpha ? TransformMethod::kManyBpptoManyBppWithAlpha : TransformMethod::kManyBpptoManyBpp; break; } } CStretchEngine::~CStretchEngine() {}

[CVE-2023-40093_1.diff] cstretchengine.cpp #8
- if (m_SrcClip.Height() == 0 || - m_SrcClip.Height() > (1 << 29) / m_InterPitch) { - return false; - } - - m_InterBuf.resize(m_SrcClip.Height() * m_InterPitch); - if (m_pSource && m_bHasAlpha && m_pSource->m_pAlphaMask) { - m_ExtraAlphaBuf.resize(m_SrcClip.Height(), m_ExtraMaskPitch); - m_DestMaskScanline.resize(m_ExtraMaskPitch); - } - bool ret = m_WeightTable.Calc(m_DestWidth, m_DestClip.left, m_DestClip.right, - m_SrcWidth, m_SrcClip.left, m_SrcClip.right, - m_ResampleOptions); - if (!ret) + FX_SAFE_SIZE_T safe_size = m_SrcClip.Height(); + safe_size *= m_InterPitch; + const size_t size = safe_size.ValueOrDefault(0); + if (size == 0) + m_InterBuf = FixedTryAllocZeroedDataVector<uint8_t>(size); + if (m_InterBuf.empty()) + return false; + + if (!m_WeightTable.CalculateWeights( + m_DestWidth, m_DestClip.left, m_DestClip.right, m_SrcWidth, + m_SrcClip.left, m_SrcClip.right, m_ResampleOptions)) { + return false; + }
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cstretchengine.cpp
316
317
318
319
320
321
322
323
324
325
m_State = State::kVertical; StretchVert(); } return false; } bool CStretchEngine::StartStretchHorz() { if (m_DestWidth == 0 || m_InterPitch == 0 || m_DestScanline.empty()) return false;
+ show +
326
327
328
329
330
331
332
333
334
335
336
337
338
339
if (m_SrcClip.Height() == 0 || m_SrcClip.Height() > (1 << 29) / m_InterPitch) { return false; } m_InterBuf.resize(m_SrcClip.Height() * m_InterPitch); if (m_pSource && m_bHasAlpha && m_pSource->m_pAlphaMask) { m_ExtraAlphaBuf.resize(m_SrcClip.Height(), m_ExtraMaskPitch); m_DestMaskScanline.resize(m_ExtraMaskPitch); } bool ret = m_WeightTable.Calc(m_DestWidth, m_DestClip.left, m_DestClip.right, m_SrcWidth, m_SrcClip.left, m_SrcClip.right, m_ResampleOptions); if (!ret)
+ show +
340
341
342
343
344
345
346
347
348
349
return false; m_CurRow = m_SrcClip.top; m_State = State::kHorizontal; return true; } bool CStretchEngine::ContinueStretchHorz(PauseIndicatorIface* pPause) { if (!m_DestWidth) return false;

[CVE-2023-40093_1.diff] cfx_imagetransformer.cpp #4
- void Transform(int x, int y, int* x1, int* y1) const { - std::pair<float, float> val = TransformInternal(x, y); - *x1 = pdfium::base::saturated_cast<int>(val.first / kBase); - *y1 = pdfium::base::saturated_cast<int>(val.second / kBase); + void Transform(int x, int y, int* x1, int* y1, int* res_x, int* res_y) const { + CFX_PointF val = TransformInternal(CFX_PointF(x, y)); + *x1 = pdfium::base::saturated_cast<int>(val.x / kBase); + *y1 = pdfium::base::saturated_cast<int>(val.y / kBase); + *res_x = static_cast<int>(val.x) % kBase; + *res_y = static_cast<int>(val.y) % kBase; + if (*res_x < 0 && *res_x > -kBase) + *res_x = kBase + *res_x; + if (*res_y < 0 && *res_y > -kBase) + *res_y = kBase + *res_y; - protected: - std::pair<float, float> TransformInternal(float x, float y) const { - return std::make_pair(a * x + c * y + e + kBase / 2, - b * x + d * y + f + kBase / 2); + private: + CFX_PointF TransformInternal(CFX_PointF pt) const { + return CFX_PointF(a * pt.x + c * pt.y + e + kBase / 2, + b * pt.x + d * pt.y + f + kBase / 2);
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_imagetransformer.cpp
158
159
160
161
162
163
164
165
166
167
class CPDF_FixedMatrix { public: explicit CPDF_FixedMatrix(const CFX_Matrix& src) : a(FXSYS_roundf(src.a * kBase)), b(FXSYS_roundf(src.b * kBase)), c(FXSYS_roundf(src.c * kBase)), d(FXSYS_roundf(src.d * kBase)), e(FXSYS_roundf(src.e * kBase)), f(FXSYS_roundf(src.f * kBase)) {}
+ show +
168
169
170
171
172
173
174
175
176
177
void Transform(int x, int y, int* x1, int* y1) const { std::pair<float, float> val = TransformInternal(x, y); *x1 = pdfium::base::saturated_cast<int>(val.first / kBase); *y1 = pdfium::base::saturated_cast<int>(val.second / kBase); } protected: std::pair<float, float> TransformInternal(float x, float y) const { return std::make_pair(a * x + c * y + e + kBase / 2, b * x + d * y + f + kBase / 2);
+ show +
178
179
180
181
182
183
184
185
186
187
} const int a; const int b; const int c; const int d; const int e; const int f; };

[CVE-2023-40093_1.diff] cfx_imagetransformer.cpp #5
-class CFX_BilinearMatrix final : public CPDF_FixedMatrix { - public: - explicit CFX_BilinearMatrix(const CFX_Matrix& src) : CPDF_FixedMatrix(src) {} - - void Transform(int x, int y, int* x1, int* y1, int* res_x, int* res_y) const { - std::pair<float, float> val = TransformInternal(x, y); - *x1 = pdfium::base::saturated_cast<int>(val.first / kBase); - *y1 = pdfium::base::saturated_cast<int>(val.second / kBase); - - *res_x = static_cast<int>(val.first) % kBase; - *res_y = static_cast<int>(val.second) % kBase; - if (*res_x < 0 && *res_x > -kBase) - *res_x = kBase + *res_x; - if (*res_y < 0 && *res_y > -kBase) - *res_y = kBase + *res_y; - } -}; -
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_imagetransformer.cpp
178
179
180
181
182
183
184
185
186
187
} const int a; const int b; const int c; const int d; const int e; const int f; };
+ show +
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
class CFX_BilinearMatrix final : public CPDF_FixedMatrix { public: explicit CFX_BilinearMatrix(const CFX_Matrix& src) : CPDF_FixedMatrix(src) {} void Transform(int x, int y, int* x1, int* y1, int* res_x, int* res_y) const { std::pair<float, float> val = TransformInternal(x, y); *x1 = pdfium::base::saturated_cast<int>(val.first / kBase); *y1 = pdfium::base::saturated_cast<int>(val.second / kBase); *res_x = static_cast<int>(val.first) % kBase; *res_y = static_cast<int>(val.second) % kBase; if (*res_x < 0 && *res_x > -kBase) *res_x = kBase + *res_x; if (*res_y < 0 && *res_y > -kBase) *res_y = kBase + *res_y; } };
+ show +
205
206
207
208
209
210
211
212
213
214
bool InStretchBounds(const FX_RECT& clip_rect, int col, int row) { return col >= 0 && col <= clip_rect.Width() && row >= 0 && row <= clip_rect.Height(); } void AdjustCoords(const FX_RECT& clip_rect, int* col, int* row) { int& src_col = *col; int& src_row = *row; if (src_col == clip_rect.Width())

[CVE-2023-40093_1.diff] cfx_imagetransformer.cpp #7
- d.row_offset_l = d.src_row_l * cdata.pitch; - d.row_offset_r = d.src_row_r * cdata.pitch; - func(d, dest); - } - dest += increment; - } - } -} - -// Let the compiler deduce the type for |func|, which cheaper than specifying it -// with std::function. -template <typename F> -void DoBicubicLoop(const CFX_ImageTransformer::CalcData& cdata, - const FX_RECT& result_rect, - const FX_RECT& clip_rect, - int increment, - const F& func) { - CFX_BilinearMatrix matrix_fix(cdata.matrix); - for (int row = 0; row < result_rect.Height(); row++) { - uint8_t* dest = cdata.bitmap->GetWritableScanline(row); - for (int col = 0; col < result_rect.Width(); col++) { - CFX_ImageTransformer::BicubicData d; - d.res_x = 0; - d.res_y = 0; - d.src_col_l = 0; - d.src_row_l = 0; - matrix_fix.Transform(col, row, &d.src_col_l, &d.src_row_l, &d.res_x, - &d.res_y); - if (LIKELY(InStretchBounds(clip_rect, d.src_col_l, d.src_row_l))) { - AdjustCoords(clip_rect, &d.src_col_l, &d.src_row_l); - bicubic_get_pos_weight(d.pos_pixel, d.u_w, d.v_w, d.src_col_l, - d.src_row_l, d.res_x, d.res_y, clip_rect.Width(), - clip_rect.Height()); - func(d, dest); - } - dest += increment; - } - } -} - -// Let the compiler deduce the type for |func|, which cheaper than specifying it -// with std::function. -template <typename F> -void DoDownSampleLoop(const CFX_ImageTransformer::CalcData& cdata, - const FX_RECT& result_rect, - const FX_RECT& clip_rect, - int increment, - const F& func) { - CPDF_FixedMatrix matrix_fix(cdata.matrix); - for (int row = 0; row < result_rect.Height(); row++) { - uint8_t* dest = cdata.bitmap->GetWritableScanline(row); - for (int col = 0; col < result_rect.Width(); col++) { - CFX_ImageTransformer::DownSampleData d; - d.src_col = 0; - d.src_row = 0; - matrix_fix.Transform(col, row, &d.src_col, &d.src_row); - if (LIKELY(InStretchBounds(clip_rect, d.src_col, d.src_row))) { - AdjustCoords(clip_rect, &d.src_col, &d.src_row); + d.row_offset_l = d.src_row_l * calc_data.pitch; + d.row_offset_r = d.src_row_r * calc_data.pitch;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_imagetransformer.cpp
234
235
236
237
238
239
240
241
242
243
d.res_y = 0; d.src_col_l = 0; d.src_row_l = 0; matrix_fix.Transform(col, row, &d.src_col_l, &d.src_row_l, &d.res_x, &d.res_y); if (LIKELY(InStretchBounds(clip_rect, d.src_col_l, d.src_row_l))) { AdjustCoords(clip_rect, &d.src_col_l, &d.src_row_l); d.src_col_r = d.src_col_l + 1; d.src_row_r = d.src_row_l + 1; AdjustCoords(clip_rect, &d.src_col_r, &d.src_row_r);
+ show +
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
d.row_offset_l = d.src_row_l * cdata.pitch; d.row_offset_r = d.src_row_r * cdata.pitch; func(d, dest); } dest += increment; } } } // Let the compiler deduce the type for |func|, which cheaper than specifying it // with std::function. template <typename F> void DoBicubicLoop(const CFX_ImageTransformer::CalcData& cdata, const FX_RECT& result_rect, const FX_RECT& clip_rect, int increment, const F& func) { CFX_BilinearMatrix matrix_fix(cdata.matrix); for (int row = 0; row < result_rect.Height(); row++) { uint8_t* dest = cdata.bitmap->GetWritableScanline(row); for (int col = 0; col < result_rect.Width(); col++) { CFX_ImageTransformer::BicubicData d; d.res_x = 0; d.res_y = 0; d.src_col_l = 0; d.src_row_l = 0; matrix_fix.Transform(col, row, &d.src_col_l, &d.src_row_l, &d.res_x, &d.res_y); if (LIKELY(InStretchBounds(clip_rect, d.src_col_l, d.src_row_l))) { AdjustCoords(clip_rect, &d.src_col_l, &d.src_row_l); bicubic_get_pos_weight(d.pos_pixel, d.u_w, d.v_w, d.src_col_l, d.src_row_l, d.res_x, d.res_y, clip_rect.Width(), clip_rect.Height()); func(d, dest); } dest += increment; } } } // Let the compiler deduce the type for |func|, which cheaper than specifying it // with std::function. template <typename F> void DoDownSampleLoop(const CFX_ImageTransformer::CalcData& cdata, const FX_RECT& result_rect, const FX_RECT& clip_rect, int increment, const F& func) { CPDF_FixedMatrix matrix_fix(cdata.matrix); for (int row = 0; row < result_rect.Height(); row++) { uint8_t* dest = cdata.bitmap->GetWritableScanline(row); for (int col = 0; col < result_rect.Width(); col++) { CFX_ImageTransformer::DownSampleData d; d.src_col = 0; d.src_row = 0; matrix_fix.Transform(col, row, &d.src_col, &d.src_row); if (LIKELY(InStretchBounds(clip_rect, d.src_col, d.src_row))) { AdjustCoords(clip_rect, &d.src_col, &d.src_row);
+ show +
302
303
304
305
306
307
308
309
310
311
func(d, dest); } dest += increment; } } } } // namespace CFX_ImageTransformer::CFX_ImageTransformer(const RetainPtr<CFX_DIBBase>& pSrc,

[CVE-2023-40093_1.diff] cfx_imagetransformer.cpp #8
-CFX_ImageTransformer::CFX_ImageTransformer(const RetainPtr<CFX_DIBBase>& pSrc, - const CFX_Matrix& matrix, - const FXDIB_ResampleOptions& options, - const FX_RECT* pClip) +CFX_ImageTransformer::CFX_ImageTransformer( + const RetainPtr<const CFX_DIBBase>& pSrc, + const CFX_Matrix& matrix, + const FXDIB_ResampleOptions& options, + const FX_RECT* pClip)
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_imagetransformer.cpp
301
302
303
304
305
306
307
308
309
310
AdjustCoords(clip_rect, &d.src_col, &d.src_row); func(d, dest); } dest += increment; } } } } // namespace
+ show +
311
312
313
314
CFX_ImageTransformer::CFX_ImageTransformer(const RetainPtr<CFX_DIBBase>& pSrc, const CFX_Matrix& matrix, const FXDIB_ResampleOptions& options, const FX_RECT* pClip)
+ show +
315
316
317
318
319
320
321
322
323
324
: m_pSrc(pSrc), m_matrix(matrix), m_ResampleOptions(options) { FX_RECT result_rect = m_matrix.GetUnitRect().GetClosestRect(); FX_RECT result_clip = result_rect; if (pClip) result_clip.Intersect(*pClip); if (result_clip.IsEmpty()) return; m_result = result_clip;

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #17
-void CompositeRow_ByteMask2Rgba(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - BlendMode blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col); - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - *dest_alpha_scan++ = src_alpha; - continue; - } - if (src_alpha == 0) { - dest_scan += 3; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (IsNonSeparableBlendMode(blend_type)) { - int blended_colors[3]; - uint8_t scan[3] = {static_cast<uint8_t>(src_b), - static_cast<uint8_t>(src_g), - static_cast<uint8_t>(src_r)}; - RGB_Blend(blend_type, scan, dest_scan, blended_colors); - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); - dest_scan++; - } else if (blend_type != BlendMode::kNormal) { - int blended = Blend(blend_type, *dest_scan, src_b); - blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = Blend(blend_type, *dest_scan, src_g); - blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = Blend(blend_type, *dest_scan, src_r); - blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - } - } -} - -void CompositeRow_ByteMask2Rgb(uint8_t* dest_scan, - const uint8_t* src_scan, +void CompositeRow_ByteMask2Rgb(pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span,
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
*dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); } dest_scan += 2; } }
+ show +
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
void CompositeRow_ByteMask2Rgba(uint8_t* dest_scan, const uint8_t* src_scan, int mask_alpha, int src_r, int src_g, int src_b, int pixel_count, BlendMode blend_type, const uint8_t* clip_scan, uint8_t* dest_alpha_scan) { for (int col = 0; col < pixel_count; col++) { int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col); uint8_t back_alpha = *dest_alpha_scan; if (back_alpha == 0) { *dest_scan++ = src_b; *dest_scan++ = src_g; *dest_scan++ = src_r; *dest_alpha_scan++ = src_alpha; continue; } if (src_alpha == 0) { dest_scan += 3; dest_alpha_scan++; continue; } uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; *dest_alpha_scan++ = dest_alpha; int alpha_ratio = src_alpha * 255 / dest_alpha; if (IsNonSeparableBlendMode(blend_type)) { int blended_colors[3]; uint8_t scan[3] = {static_cast<uint8_t>(src_b), static_cast<uint8_t>(src_g), static_cast<uint8_t>(src_r)}; RGB_Blend(blend_type, scan, dest_scan, blended_colors); *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); dest_scan++; } else if (blend_type != BlendMode::kNormal) { int blended = Blend(blend_type, *dest_scan, src_b); blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); dest_scan++; blended = Blend(blend_type, *dest_scan, src_g); blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); dest_scan++; blended = Blend(blend_type, *dest_scan, src_r); blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); dest_scan++; } else { *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); dest_scan++; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); dest_scan++; } } } void CompositeRow_ByteMask2Rgb(uint8_t* dest_scan, const uint8_t* src_scan,
+ show +
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
int mask_alpha, int src_r, int src_g, int src_b, int pixel_count, BlendMode blend_type, int Bpp, const uint8_t* clip_scan) { for (int col = 0; col < pixel_count; col++) { int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #21
-void CompositeRow_ByteMask2Graya(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_gray, - int pixel_count, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col); - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - *dest_scan++ = src_gray; - *dest_alpha_scan++ = src_alpha; - continue; - } - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, alpha_ratio); - dest_scan++; - } -} - -void CompositeRow_BitMask2Argb(uint8_t* dest_scan, - const uint8_t* src_scan, +void CompositeRow_BitMask2Argb(pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span,
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
const uint8_t* clip_scan) { for (int col = 0; col < pixel_count; col++) { int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col); if (src_alpha) { *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, src_alpha); } dest_scan++; } }
+ show +
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
void CompositeRow_ByteMask2Graya(uint8_t* dest_scan, const uint8_t* src_scan, int mask_alpha, int src_gray, int pixel_count, const uint8_t* clip_scan, uint8_t* dest_alpha_scan) { for (int col = 0; col < pixel_count; col++) { int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col); uint8_t back_alpha = *dest_alpha_scan; if (back_alpha == 0) { *dest_scan++ = src_gray; *dest_alpha_scan++ = src_alpha; continue; } if (src_alpha == 0) { dest_scan++; dest_alpha_scan++; continue; } uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; *dest_alpha_scan++ = dest_alpha; int alpha_ratio = src_alpha * 255 / dest_alpha; *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, alpha_ratio); dest_scan++; } } void CompositeRow_BitMask2Argb(uint8_t* dest_scan, const uint8_t* src_scan,
+ show +
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
int mask_alpha, int src_r, int src_g, int src_b, int src_left, int pixel_count, BlendMode blend_type, const uint8_t* clip_scan) { if (blend_type == BlendMode::kNormal && !clip_scan && mask_alpha == 255) { FX_ARGB argb = ArgbEncode(0xff, src_r, src_g, src_b);

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #29
-void CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - BlendMode blend_type, - int src_Bpp) { - int blended_colors[3]; +void CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int width, + BlendMode blend_type, + int src_Bpp) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + int blended_colors[3];
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
dest_scan[index] = FXDIB_ALPHA_MERGE(dest_scan[index], *src_scan, alpha_ratio); } src_scan++; } dest_scan += 4; src_scan++; } }
+ show +
2022
2023
2024
2025
2026
2027
void CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int width, BlendMode blend_type, int src_Bpp) { int blended_colors[3];
+ show +
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type); int src_gap = src_Bpp - 3; for (int col = 0; col < width; col++) { uint8_t back_alpha = dest_scan[3]; if (back_alpha == 0) { if (src_Bpp == 4) { FXARGB_SETRGBORDERDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); } else { FXARGB_SETRGBORDERDIB( dest_scan, ArgbEncode(0xff, src_scan[2], src_scan[1], src_scan[0]));

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #31
-void CompositeRow_Argb2Rgb_Blend_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - BlendMode blend_type, - int dest_Bpp, - const uint8_t* clip_scan) { +void CompositeRow_Argb2Rgb_Blend_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int width, + BlendMode blend_type, + int dest_Bpp, + pdfium::span<const uint8_t> clip_span) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + const uint8_t* clip_scan = clip_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
? blended_colors[color] : Blend(blend_type, dest_scan[index], src_color); dest_scan[index] = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); src_scan++; } dest_scan += 4; src_scan += src_gap; } }
+ show +
2065
2066
2067
2068
2069
2070
void CompositeRow_Argb2Rgb_Blend_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int width, BlendMode blend_type, int dest_Bpp, const uint8_t* clip_scan) {
+ show +
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
int blended_colors[3]; bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type); for (int col = 0; col < width; col++) { uint8_t src_alpha; if (clip_scan) { src_alpha = src_scan[3] * (*clip_scan++) / 255; } else { src_alpha = src_scan[3]; } if (src_alpha == 0) {

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #33
-void CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int src_Bpp) { +void CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int width, + int src_Bpp) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
? blended_colors[color] : Blend(blend_type, back_color, *src_scan); dest_scan[index] = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); src_scan++; } dest_scan += dest_Bpp; src_scan++; } }
+ show +
2106
2107
2108
2109
void CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int width, int src_Bpp) {
+ show +
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
for (int col = 0; col < width; col++) { if (src_Bpp == 4) { FXARGB_SETRGBORDERDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); } else { FXARGB_SETRGBORDERDIB( dest_scan, ArgbEncode(0xff, src_scan[2], src_scan[1], src_scan[0])); } dest_scan += 4; src_scan += src_Bpp; }

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #35
-void CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - const uint8_t* clip_scan) { +void CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int width, + int dest_Bpp, + pdfium::span<const uint8_t> clip_span) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + const uint8_t* clip_scan = clip_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
? blended_colors[color] : Blend(blend_type, back_color, src_color); dest_scan[index] = blended; src_scan++; } dest_scan += dest_Bpp; src_scan += src_gap; } }
+ show +
2154
2155
2156
2157
2158
void CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int width, int dest_Bpp, const uint8_t* clip_scan) {
+ show +
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
for (int col = 0; col < width; col++) { uint8_t src_alpha; if (clip_scan) { src_alpha = src_scan[3] * (*clip_scan++) / 255; } else { src_alpha = src_scan[3]; } if (src_alpha == 255) { dest_scan[2] = *src_scan++; dest_scan[1] = *src_scan++;

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #38
- dest_scan[2] = *src_scan++; - dest_scan[1] = *src_scan++; - dest_scan[0] = *src_scan++; - src_scan += src_gap; + ReverseCopy3Bytes(dest_scan, src_scan); + src_scan += src_Bpp;
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
BlendMode blend_type, int src_Bpp, const uint8_t* clip_scan) { int blended_colors[3]; bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type); int src_gap = src_Bpp - 3; for (int col = 0; col < width; col++) { int src_alpha = *clip_scan++; uint8_t back_alpha = dest_scan[3]; if (back_alpha == 0) {
+ show +
2217
2218
2219
2220
dest_scan[2] = *src_scan++; dest_scan[1] = *src_scan++; dest_scan[0] = *src_scan++; src_scan += src_gap;
+ show +
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
dest_scan += 4; continue; } if (src_alpha == 0) { dest_scan += 4; src_scan += src_Bpp; continue; } uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; dest_scan[3] = dest_alpha;

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #40
-void CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - BlendMode blend_type, - int dest_Bpp, - int src_Bpp, - const uint8_t* clip_scan) { +void CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int width, + BlendMode blend_type, + int dest_Bpp, + int src_Bpp, + pdfium::span<const uint8_t> clip_span) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + const uint8_t* clip_scan = clip_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
blended = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); dest_scan[index] = FXDIB_ALPHA_MERGE(dest_scan[index], blended, alpha_ratio); src_scan++; } dest_scan += 4; src_scan += src_gap; } }
+ show +
2255
2256
2257
2258
2259
2260
2261
void CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int width, BlendMode blend_type, int dest_Bpp, int src_Bpp, const uint8_t* clip_scan) {
+ show +
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
int blended_colors[3]; bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type); int src_gap = src_Bpp - 3; for (int col = 0; col < width; col++) { uint8_t src_alpha = *clip_scan++; if (src_alpha == 0) { dest_scan += dest_Bpp; src_scan += src_Bpp; continue; }

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #48
-void CompositeRow_ByteMask2Argb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - BlendMode blend_type, - const uint8_t* clip_scan) { +void CompositeRow_ByteMask2Argb_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int pixel_count, + BlendMode blend_type, + pdfium::span<const uint8_t> clip_span) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + const uint8_t* clip_scan = clip_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; dest_scan[3] = dest_alpha; int alpha_ratio = src_alpha * 255 / dest_alpha; dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, alpha_ratio); dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, alpha_ratio); dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, alpha_ratio); dest_scan += 4; } }
+ show +
2523
2524
2525
2526
2527
2528
2529
2530
2531
void CompositeRow_ByteMask2Argb_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int mask_alpha, int src_r, int src_g, int src_b, int pixel_count, BlendMode blend_type, const uint8_t* clip_scan) {
+ show +
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
for (int col = 0; col < pixel_count; col++) { int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col); uint8_t back_alpha = dest_scan[3]; if (back_alpha == 0) { FXARGB_SETRGBORDERDIB(dest_scan, ArgbEncode(src_alpha, src_r, src_g, src_b)); dest_scan += 4; continue; } if (src_alpha == 0) {

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #50
-void CompositeRow_ByteMask2Rgb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - BlendMode blend_type, - int Bpp, - const uint8_t* clip_scan) { +void CompositeRow_ByteMask2Rgb_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int pixel_count, + BlendMode blend_type, + int Bpp, + pdfium::span<const uint8_t> clip_span) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + const uint8_t* clip_scan = clip_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, alpha_ratio); } else { dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, alpha_ratio); dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, alpha_ratio); dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, alpha_ratio); } dest_scan += 4; } }
+ show +
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
void CompositeRow_ByteMask2Rgb_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int mask_alpha, int src_r, int src_g, int src_b, int pixel_count, BlendMode blend_type, int Bpp, const uint8_t* clip_scan) {
+ show +
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
for (int col = 0; col < pixel_count; col++) { int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col); if (src_alpha == 0) { dest_scan += Bpp; continue; } if (IsNonSeparableBlendMode(blend_type)) { int blended_colors[3]; uint8_t scan[3] = {static_cast<uint8_t>(src_b), static_cast<uint8_t>(src_g),

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #52
-void CompositeRow_BitMask2Argb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int src_left, - int pixel_count, - BlendMode blend_type, - const uint8_t* clip_scan) { +void CompositeRow_BitMask2Argb_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int src_left, + int pixel_count, + BlendMode blend_type, + pdfium::span<const uint8_t> clip_span) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + const uint8_t* clip_scan = clip_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, src_alpha); } else { dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, src_alpha); dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, src_alpha); dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, src_alpha); } dest_scan += Bpp; } }
+ show +
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
void CompositeRow_BitMask2Argb_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int mask_alpha, int src_r, int src_g, int src_b, int src_left, int pixel_count, BlendMode blend_type, const uint8_t* clip_scan) {
+ show +
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
if (blend_type == BlendMode::kNormal && !clip_scan && mask_alpha == 255) { FX_ARGB argb = ArgbEncode(0xff, src_r, src_g, src_b); for (int col = 0; col < pixel_count; col++) { if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { FXARGB_SETRGBORDERDIB(dest_scan, argb); } dest_scan += 4; } return; }

[CVE-2023-40093_1.diff] cfx_scanlinecompositor.cpp #54
-void CompositeRow_BitMask2Rgb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int src_left, - int pixel_count, - BlendMode blend_type, - int Bpp, - const uint8_t* clip_scan) { +void CompositeRow_BitMask2Rgb_RgbByteOrder( + pdfium::span<uint8_t> dest_span, + pdfium::span<const uint8_t> src_span, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int src_left, + int pixel_count, + BlendMode blend_type, + int Bpp, + pdfium::span<const uint8_t> clip_span) { + uint8_t* dest_scan = dest_span.data(); + const uint8_t* src_scan = src_span.data(); + const uint8_t* clip_scan = clip_span.data();
/media/esteban/ACOS/dotOS/external/pdfium/core/fxge/dib/cfx_scanlinecompositor.cpp
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, alpha_ratio); } else { dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, alpha_ratio); dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, alpha_ratio); dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, alpha_ratio); } dest_scan += 4; } }
+ show +
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
void CompositeRow_BitMask2Rgb_RgbByteOrder(uint8_t* dest_scan, const uint8_t* src_scan, int mask_alpha, int src_r, int src_g, int src_b, int src_left, int pixel_count, BlendMode blend_type, int Bpp, const uint8_t* clip_scan) {
+ show +
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
if (blend_type == BlendMode::kNormal && !clip_scan && mask_alpha == 255) { for (int col = 0; col < pixel_count; col++) { if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { dest_scan[2] = src_b; dest_scan[1] = src_g; dest_scan[0] = src_r; } dest_scan += Bpp; } return;

[CVE-2023-40093_1.diff] cpdf_textpage.cpp #12
- int32_t minH = std::max(static_cast<int32_t>(pPageObj->GetRect().left), 0); - int32_t maxH = - std::min(static_cast<int32_t>(pPageObj->GetRect().right), nPageWidth); - int32_t minV = - std::max(static_cast<int32_t>(pPageObj->GetRect().bottom), 0); - int32_t maxV = - std::min(static_cast<int32_t>(pPageObj->GetRect().top), nPageHeight); + int32_t minH = static_cast<int32_t>( + pdfium::clamp<float>(pPageObj->GetRect().left, 0.0f, nPageWidth)); + int32_t maxH = static_cast<int32_t>( + pdfium::clamp<float>(pPageObj->GetRect().right, 0.0f, nPageWidth)); + int32_t minV = static_cast<int32_t>( + pdfium::clamp<float>(pPageObj->GetRect().bottom, 0.0f, nPageHeight)); + int32_t maxV = static_cast<int32_t>( + pdfium::clamp<float>(pPageObj->GetRect().top, 0.0f, nPageHeight));
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdftext/cpdf_textpage.cpp
518
519
520
521
522
523
524
525
526
527
std::vector<bool> nVerticalMask(nPageHeight); float fLineHeight = 0.0f; int32_t nStartH = nPageWidth; int32_t nEndH = 0; int32_t nStartV = nPageHeight; int32_t nEndV = 0; for (const auto& pPageObj : *m_pPage) { if (!pPageObj->IsText()) continue;
+ show +
528
529
530
531
532
533
534
int32_t minH = std::max(static_cast<int32_t>(pPageObj->GetRect().left), 0); int32_t maxH = std::min(static_cast<int32_t>(pPageObj->GetRect().right), nPageWidth); int32_t minV = std::max(static_cast<int32_t>(pPageObj->GetRect().bottom), 0); int32_t maxV = std::min(static_cast<int32_t>(pPageObj->GetRect().top), nPageHeight);
+ show +
535
536
537
538
539
540
541
542
543
544
if (minH >= maxH || minV >= maxV) continue; for (int32_t i = minH; i < maxH; ++i) nHorizontalMask[i] = true; for (int32_t i = minV; i < maxV; ++i) nVerticalMask[i] = true; nStartH = std::min(nStartH, minH); nEndH = std::max(nEndH, maxH);

[CVE-2023-40093_1.diff] cpdf_linkextract.cpp #6
- if (start.has_value() && len > start.value() + kWWWAddrStartLen) { - size_t end = TrimExternalBracketsFromWebLink(str, start.value(), - str.GetLength() - 1); - end = FindWebLinkEnding(str, start.value(), end); - if (end > start.value() + kWWWAddrStartLen) { - *nStart = start.value(); - *nCount = end - start.value() + 1; - *strBeCheck = L"http://" + strBeCheck->Substr(*nStart, *nCount); - return true; + if (start.has_value()) { + size_t off = start.value() + kWWWAddrStartLen; + if (str.GetLength() > off) { + const size_t end = + FindWebLinkEnding(str, start.value(), + TrimExternalBracketsFromWebLink( + str, start.value(), str.GetLength() - 1)); + if (end > off) { + const size_t nStart = start.value(); + const size_t nCount = end - nStart + 1; + return Link{{nStart, nCount}, + L"http://" + strBeCheck.Substr(nStart, nCount)}; + } - return false; + + return absl::nullopt;
/media/esteban/ACOS/dotOS/external/pdfium/core/fpdftext/cpdf_linkextract.cpp
207
208
209
210
211
212
213
214
215
216
*nCount = end - start.value() + 1; *strBeCheck = strBeCheck->Substr(*nStart, *nCount); return true; } } } } // When there is no scheme, try to find url starting with "www.". start = str.Find(kWWWAddrStart);
+ show +
217
218
219
220
221
222
223
224
225
226
227
228
if (start.has_value() && len > start.value() + kWWWAddrStartLen) { size_t end = TrimExternalBracketsFromWebLink(str, start.value(), str.GetLength() - 1); end = FindWebLinkEnding(str, start.value(), end); if (end > start.value() + kWWWAddrStartLen) { *nStart = start.value(); *nCount = end - start.value() + 1; *strBeCheck = L"http://" + strBeCheck->Substr(*nStart, *nCount); return true; } } return false;
+ show +
229
230
231
232
233
234
235
236
237
238
} bool CPDF_LinkExtract::CheckMailLink(WideString* str) { auto aPos = str->Find(L'@'); // Invalid when no '@' or when starts/ends with '@'. if (!aPos.has_value() || aPos.value() == 0 || aPos == str->GetLength() - 1) return false; // Check the local part. size_t pPos = aPos.value(); // Used to track the position of '@' or '.'.

[CVE-2023-40093_1.diff] fpdf_edittext.cpp #3
-CPDF_Dictionary* LoadFontDesc(CPDF_Document* pDoc, - const ByteString& font_name, - CFX_Font* pFont, - pdfium::span<const uint8_t> span, - int font_type) { - CPDF_Dictionary* pFontDesc = pDoc->NewIndirect<CPDF_Dictionary>(); +ByteString BaseFontNameForType(CFX_Font* pFont, int font_type) { + ByteString name = font_type == FPDF_FONT_TYPE1 ? pFont->GetPsName() + : pFont->GetBaseFontName(); + if (!name.IsEmpty()) + return name; + + return CFX_Font::kUntitledFontName; +} + +RetainPtr<CPDF_Dictionary> LoadFontDesc(CPDF_Document* pDoc, + const ByteString& font_name, + CFX_Font* pFont, + pdfium::span<const uint8_t> span, + int font_type) { + auto pFontDesc = pDoc->NewIndirect<CPDF_Dictionary>();
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edittext.cpp
57
58
59
60
61
62
63
64
65
66
"TextRenderingMode::MODE_FILL_STROKE_CLIP value mismatch"); static_assert(static_cast<int>(TextRenderingMode::MODE_CLIP) == FPDF_TEXTRENDERMODE_CLIP, "TextRenderingMode::MODE_CLIP value mismatch"); static_assert(static_cast<int>(TextRenderingMode::MODE_LAST) == FPDF_TEXTRENDERMODE_LAST, "TextRenderingMode::MODE_LAST value mismatch"); namespace {
+ show +
67
68
69
70
71
72
CPDF_Dictionary* LoadFontDesc(CPDF_Document* pDoc, const ByteString& font_name, CFX_Font* pFont, pdfium::span<const uint8_t> span, int font_type) { CPDF_Dictionary* pFontDesc = pDoc->NewIndirect<CPDF_Dictionary>();
+ show +
73
74
75
76
77
78
79
80
81
82
pFontDesc->SetNewFor<CPDF_Name>("Type", "FontDescriptor"); pFontDesc->SetNewFor<CPDF_Name>("FontName", font_name); int flags = 0; if (FXFT_Is_Face_fixedwidth(pFont->GetFaceRec())) flags |= FXFONT_FIXED_PITCH; if (font_name.Contains("Serif")) flags |= FXFONT_SERIF; if (FXFT_Is_Face_Italic(pFont->GetFaceRec())) flags |= FXFONT_ITALIC; if (FXFT_Is_Face_Bold(pFont->GetFaceRec()))

[CVE-2023-40093_1.diff] cpdfsdk_widget.cpp #13
-Optional<FX_COLORREF> CPDFSDK_Widget::GetFillColor() const { - CPDF_FormControl* pFormCtrl = GetFormControl(); - int iColorType = 0; - FX_COLORREF color = ArgbToColorRef(pFormCtrl->GetBackgroundColor(iColorType)); - if (iColorType == CFX_Color::kTransparent) - return {}; - return color; +absl::optional<FX_COLORREF> CPDFSDK_Widget::GetFillColor() const { + CFX_Color::TypeAndARGB type_argb_pair = + GetFormControl()->GetColorARGB(pdfium::appearance::kBG); + + if (type_argb_pair.color_type == CFX_Color::Type::kTransparent) + return absl::nullopt; + + return ArgbToColorRef(type_argb_pair.argb); -Optional<FX_COLORREF> CPDFSDK_Widget::GetBorderColor() const { - CPDF_FormControl* pFormCtrl = GetFormControl(); - int iColorType = 0; - FX_COLORREF color = ArgbToColorRef(pFormCtrl->GetBorderColor(iColorType)); - if (iColorType == CFX_Color::kTransparent) - return {}; - return color; +absl::optional<FX_COLORREF> CPDFSDK_Widget::GetBorderColor() const { + CFX_Color::TypeAndARGB type_argb_pair = + GetFormControl()->GetColorARGB(pdfium::appearance::kBC); + if (type_argb_pair.color_type == CFX_Color::Type::kTransparent) + return absl::nullopt; + + return ArgbToColorRef(type_argb_pair.argb); -Optional<FX_COLORREF> CPDFSDK_Widget::GetTextColor() const { - CPDF_FormControl* pFormCtrl = GetFormControl(); - CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance(); - FX_ARGB argb; - Optional<CFX_Color::Type> iColorType; - std::tie(iColorType, argb) = da.GetColor(); - if (!iColorType.has_value()) - return {}; +absl::optional<FX_COLORREF> CPDFSDK_Widget::GetTextColor() const { + CPDF_DefaultAppearance da = GetFormControl()->GetDefaultAppearance(); + absl::optional<CFX_Color::TypeAndARGB> maybe_type_argb_pair = + da.GetColorARGB(); - FX_COLORREF color = ArgbToColorRef(argb); - if (iColorType.value() == CFX_Color::kTransparent) - return {}; - return color; + if (!maybe_type_argb_pair.has_value()) + return absl::nullopt; + + if (maybe_type_argb_pair.value().color_type == CFX_Color::Type::kTransparent) + return absl::nullopt; + + return ArgbToColorRef(maybe_type_argb_pair.value().argb);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_widget.cpp
385
386
387
388
389
390
391
392
393
394
CPDF_FormControl* pCtrl = GetFormControl(); return pCtrl->GetRotation() % 360; } #ifdef PDF_ENABLE_XFA WideString CPDFSDK_Widget::GetName() const { return GetFormField()->GetFullName(); } #endif // PDF_ENABLE_XFA
+ show +
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
Optional<FX_COLORREF> CPDFSDK_Widget::GetFillColor() const { CPDF_FormControl* pFormCtrl = GetFormControl(); int iColorType = 0; FX_COLORREF color = ArgbToColorRef(pFormCtrl->GetBackgroundColor(iColorType)); if (iColorType == CFX_Color::kTransparent) return {}; return color; } Optional<FX_COLORREF> CPDFSDK_Widget::GetBorderColor() const { CPDF_FormControl* pFormCtrl = GetFormControl(); int iColorType = 0; FX_COLORREF color = ArgbToColorRef(pFormCtrl->GetBorderColor(iColorType)); if (iColorType == CFX_Color::kTransparent) return {}; return color; } Optional<FX_COLORREF> CPDFSDK_Widget::GetTextColor() const { CPDF_FormControl* pFormCtrl = GetFormControl(); CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance(); FX_ARGB argb; Optional<CFX_Color::Type> iColorType; std::tie(iColorType, argb) = da.GetColor(); if (!iColorType.has_value()) return {}; FX_COLORREF color = ArgbToColorRef(argb); if (iColorType.value() == CFX_Color::kTransparent) return {}; return color;
+ show +
426
427
428
429
430
431
432
433
434
435
} float CPDFSDK_Widget::GetFontSize() const { CPDF_FormControl* pFormCtrl = GetFormControl(); CPDF_DefaultAppearance pDa = pFormCtrl->GetDefaultAppearance(); float fFontSize; pDa.GetFont(&fFontSize); return fFontSize; }

[CVE-2023-40093_1.diff] cpdfsdk_formfillenvironment.cpp #12
-CPDFSDK_AnnotHandlerMgr* CPDFSDK_FormFillEnvironment::GetAnnotHandlerMgr() { - return m_pAnnotHandlerMgr.get(); -} - -CPDFSDK_ActionHandler* CPDFSDK_FormFillEnvironment::GetActionHandler() { - if (!m_pActionHandler) - m_pActionHandler = pdfium::MakeUnique<CPDFSDK_ActionHandler>(); - return m_pActionHandler.get(); -} - -CFFL_InteractiveFormFiller* -CPDFSDK_FormFillEnvironment::GetInteractiveFormFiller() { - if (!m_pFormFiller) - m_pFormFiller = pdfium::MakeUnique<CFFL_InteractiveFormFiller>(this); - return m_pFormFiller.get(); -} -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_formfillenvironment.cpp
316
317
318
319
320
321
322
323
324
325
form_data.data(), form_data.size(), AsFPDFWideString(&bsUrl)); } IJS_Runtime* CPDFSDK_FormFillEnvironment::GetIJSRuntime() { if (!m_pIJSRuntime) m_pIJSRuntime = IJS_Runtime::Create(this); return m_pIJSRuntime.get(); }
+ show +
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
CPDFSDK_AnnotHandlerMgr* CPDFSDK_FormFillEnvironment::GetAnnotHandlerMgr() { return m_pAnnotHandlerMgr.get(); } CPDFSDK_ActionHandler* CPDFSDK_FormFillEnvironment::GetActionHandler() { if (!m_pActionHandler) m_pActionHandler = pdfium::MakeUnique<CPDFSDK_ActionHandler>(); return m_pActionHandler.get(); } CFFL_InteractiveFormFiller* CPDFSDK_FormFillEnvironment::GetInteractiveFormFiller() { if (!m_pFormFiller) m_pFormFiller = pdfium::MakeUnique<CFFL_InteractiveFormFiller>(this); return m_pFormFiller.get();
+ show +
341
342
343
344
345
346
347
348
349
350
} void CPDFSDK_FormFillEnvironment::Invalidate(IPDF_Page* page, const FX_RECT& rect) { if (m_pInfo && m_pInfo->FFI_Invalidate) { m_pInfo->FFI_Invalidate(m_pInfo, FPDFPageFromIPDFPage(page), rect.left, rect.top, rect.right, rect.bottom); } }

[CVE-2023-40093_1.diff] cpdfsdk_formfillenvironment.cpp #19
- if (it.second->IsValidSDKAnnot(GetFocusAnnot())) - KillFocusAnnot(0); + if (it.second->IsValidSDKAnnot(GetFocusAnnot())) { + ObservedPtr<CPDFSDK_PageView> pObserved(it.second.get()); + KillFocusAnnot({}); + if (!pObserved) + break; + } -CPDFSDK_PageView* CPDFSDK_FormFillEnvironment::GetPageView( - IPDF_Page* pUnderlyingPage, - bool renew) { - auto it = m_PageMap.find(pUnderlyingPage); - if (it != m_PageMap.end()) - return it->second.get(); +CPDFSDK_PageView* CPDFSDK_FormFillEnvironment::GetOrCreatePageView( + IPDF_Page* pUnderlyingPage) { + CPDFSDK_PageView* pExisting = GetPageView(pUnderlyingPage); + if (pExisting) + return pExisting; - if (!renew) - return nullptr; - - auto pNew = pdfium::MakeUnique<CPDFSDK_PageView>(this, pUnderlyingPage); + auto pNew = std::make_unique<CPDFSDK_PageView>(this, pUnderlyingPage);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_formfillenvironment.cpp
551
552
553
554
555
556
557
558
559
560
void CPDFSDK_FormFillEnvironment::PageEvent(int iPageCount, uint32_t dwEventType) const { if (m_pInfo && m_pInfo->version >= 2 && m_pInfo->FFI_PageEvent) m_pInfo->FFI_PageEvent(m_pInfo, iPageCount, dwEventType); } #endif // PDF_ENABLE_XFA void CPDFSDK_FormFillEnvironment::ClearAllFocusedAnnots() { for (auto& it : m_PageMap) {
+ show +
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
if (it.second->IsValidSDKAnnot(GetFocusAnnot())) KillFocusAnnot(0); } } CPDFSDK_PageView* CPDFSDK_FormFillEnvironment::GetPageView( IPDF_Page* pUnderlyingPage, bool renew) { auto it = m_PageMap.find(pUnderlyingPage); if (it != m_PageMap.end()) return it->second.get(); if (!renew) return nullptr; auto pNew = pdfium::MakeUnique<CPDFSDK_PageView>(this, pUnderlyingPage);
+ show +
577
578
579
580
581
582
583
584
585
586
CPDFSDK_PageView* pPageView = pNew.get(); m_PageMap[pUnderlyingPage] = std::move(pNew); // Delay to load all the annotations, to avoid endless loop. pPageView->LoadFXAnnots(); return pPageView; } CPDFSDK_PageView* CPDFSDK_FormFillEnvironment::GetPageView(int nIndex) { IPDF_Page* pTempPage = GetPage(nIndex);

[CVE-2023-40093_1.diff] fpdf_progressive.cpp #3
+#include <memory> -#include "third_party/base/ptr_util.h" - -#ifdef _SKIA_SUPPORT_PATHS_ -#include "core/fxge/cfx_renderdevice.h" -#endif
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_progressive.cpp
9
10
11
12
13
14
15
16
17
18
#include <utility> #include "core/fpdfapi/page/cpdf_page.h" #include "core/fpdfapi/render/cpdf_pagerendercontext.h" #include "core/fpdfapi/render/cpdf_progressiverenderer.h" #include "core/fxge/cfx_defaultrenderdevice.h" #include "fpdfsdk/cpdfsdk_helpers.h" #include "fpdfsdk/cpdfsdk_pauseadapter.h" #include "fpdfsdk/cpdfsdk_renderpage.h" #include "public/fpdfview.h"
+ show +
19
20
21
22
23
#include "third_party/base/ptr_util.h" #ifdef _SKIA_SUPPORT_PATHS_ #include "core/fxge/cfx_renderdevice.h" #endif
+ show +
24
25
26
27
28
29
30
31
32
33
// These checks are here because core/ and public/ cannot depend on each other. static_assert(CPDF_ProgressiveRenderer::kReady == FPDF_RENDER_READY, "CPDF_ProgressiveRenderer::kReady value mismatch"); static_assert(CPDF_ProgressiveRenderer::kToBeContinued == FPDF_RENDER_TOBECONTINUED, "CPDF_ProgressiveRenderer::kToBeContinued value mismatch"); static_assert(CPDF_ProgressiveRenderer::kDone == FPDF_RENDER_DONE, "CPDF_ProgressiveRenderer::kDone value mismatch"); static_assert(CPDF_ProgressiveRenderer::kFailed == FPDF_RENDER_FAILED,

[CVE-2023-40093_1.diff] fpdf_progressive.cpp #5
+FPDF_EXPORT int FPDF_CALLCONV +FPDF_RenderPageBitmapWithColorScheme_Start(FPDF_BITMAP bitmap, + FPDF_PAGE page, + int start_x, + int start_y, + int size_x, + int size_y, + int rotate, + int flags, + const FPDF_COLORSCHEME* color_scheme, + IFSDK_PAUSE* pause) { + if (!bitmap || !pause || pause->version != 1) + return FPDF_RENDER_FAILED; + + CPDF_Page* pPage = CPDFPageFromFPDFPage(page); + if (!pPage) + return FPDF_RENDER_FAILED; + + auto pOwnedContext = std::make_unique<CPDF_PageRenderContext>(); + CPDF_PageRenderContext* pContext = pOwnedContext.get(); + pPage->SetRenderContext(std::move(pOwnedContext)); + + RetainPtr<CFX_DIBitmap> pBitmap(CFXDIBitmapFromFPDFBitmap(bitmap)); + auto pOwnedDevice = std::make_unique<CFX_DefaultRenderDevice>(); + CFX_DefaultRenderDevice* pDevice = pOwnedDevice.get(); + pContext->m_pDevice = std::move(pOwnedDevice); + pDevice->AttachWithRgbByteOrder(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER)); + + CPDFSDK_PauseAdapter pause_adapter(pause); + CPDFSDK_RenderPageWithContext(pContext, pPage, start_x, start_y, size_x, + size_y, rotate, flags, color_scheme, + /*need_to_restore=*/false, &pause_adapter); + +#if defined(_SKIA_SUPPORT_) + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) { + pBitmap->UnPreMultiply(); + } +#endif // defined(_SKIA_SUPPORT_) + + if (!pContext->m_pRenderer) + return FPDF_RENDER_FAILED; + + return ToFPDFStatus(pContext->m_pRenderer->GetStatus()); +} + - if (!bitmap || !pause || pause->version != 1) - return FPDF_RENDER_FAILED; - - CPDF_Page* pPage = CPDFPageFromFPDFPage(page); - if (!pPage) - return FPDF_RENDER_FAILED; - - auto pOwnedContext = pdfium::MakeUnique<CPDF_PageRenderContext>(); - CPDF_PageRenderContext* pContext = pOwnedContext.get(); - pPage->SetRenderContext(std::move(pOwnedContext)); - - RetainPtr<CFX_DIBitmap> pBitmap(CFXDIBitmapFromFPDFBitmap(bitmap)); - auto pOwnedDevice = pdfium::MakeUnique<CFX_DefaultRenderDevice>(); - CFX_DefaultRenderDevice* pDevice = pOwnedDevice.get(); - pContext->m_pDevice = std::move(pOwnedDevice); - pDevice->Attach(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER), nullptr, false); - - CPDFSDK_PauseAdapter pause_adapter(pause); - CPDFSDK_RenderPageWithContext(pContext, pPage, start_x, start_y, size_x, - size_y, rotate, flags, - /*need_to_restore=*/false, &pause_adapter); - -#ifdef _SKIA_SUPPORT_PATHS_ - pDevice->Flush(false); - pBitmap->UnPreMultiply(); -#endif - - if (!pContext->m_pRenderer) - return FPDF_RENDER_FAILED; - - return ToFPDFStatus(pContext->m_pRenderer->GetStatus()); + return FPDF_RenderPageBitmapWithColorScheme_Start( + bitmap, page, start_x, start_y, size_x, size_y, rotate, flags, + /*color_scheme=*/nullptr, pause);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_progressive.cpp
43
44
45
46
47
48
49
50
51
52
FPDF_EXPORT int FPDF_CALLCONV FPDF_RenderPageBitmap_Start(FPDF_BITMAP bitmap, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y, int rotate, int flags, IFSDK_PAUSE* pause) {
+ show +
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
if (!bitmap || !pause || pause->version != 1) return FPDF_RENDER_FAILED; CPDF_Page* pPage = CPDFPageFromFPDFPage(page); if (!pPage) return FPDF_RENDER_FAILED; auto pOwnedContext = pdfium::MakeUnique<CPDF_PageRenderContext>(); CPDF_PageRenderContext* pContext = pOwnedContext.get(); pPage->SetRenderContext(std::move(pOwnedContext)); RetainPtr<CFX_DIBitmap> pBitmap(CFXDIBitmapFromFPDFBitmap(bitmap)); auto pOwnedDevice = pdfium::MakeUnique<CFX_DefaultRenderDevice>(); CFX_DefaultRenderDevice* pDevice = pOwnedDevice.get(); pContext->m_pDevice = std::move(pOwnedDevice); pDevice->Attach(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER), nullptr, false); CPDFSDK_PauseAdapter pause_adapter(pause); CPDFSDK_RenderPageWithContext(pContext, pPage, start_x, start_y, size_x, size_y, rotate, flags, /*need_to_restore=*/false, &pause_adapter); #ifdef _SKIA_SUPPORT_PATHS_ pDevice->Flush(false); pBitmap->UnPreMultiply(); #endif if (!pContext->m_pRenderer) return FPDF_RENDER_FAILED; return ToFPDFStatus(pContext->m_pRenderer->GetStatus());
+ show +
84
85
86
87
88
89
90
91
92
93
} FPDF_EXPORT int FPDF_CALLCONV FPDF_RenderPage_Continue(FPDF_PAGE page, IFSDK_PAUSE* pause) { if (!pause || pause->version != 1) return FPDF_RENDER_FAILED; CPDF_Page* pPage = CPDFPageFromFPDFPage(page); if (!pPage) return FPDF_RENDER_FAILED;

[CVE-2023-40093_1.diff] cpdfsdk_filewriteadapter.h #2
- template <typename T, typename... Args> - friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); + CONSTRUCT_VIA_MAKE_RETAIN; - bool WriteBlock(const void* data, size_t size) override; - bool WriteString(ByteStringView str) override; + bool WriteBlock(pdfium::span<const uint8_t> buffer) override;
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_filewriteadapter.h
7
8
9
10
11
12
13
14
15
16
#ifndef FPDFSDK_CPDFSDK_FILEWRITEADAPTER_H_ #define FPDFSDK_CPDFSDK_FILEWRITEADAPTER_H_ #include "core/fxcrt/fx_stream.h" #include "core/fxcrt/retain_ptr.h" #include "core/fxcrt/unowned_ptr.h" #include "public/fpdf_save.h" class CPDFSDK_FileWriteAdapter final : public IFX_RetainableWriteStream { public:
+ show +
17
18
19
20
21
22
template <typename T, typename... Args> friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); // IFX_WriteStream: bool WriteBlock(const void* data, size_t size) override; bool WriteString(ByteStringView str) override;
+ show +
23
24
25
26
27
28
29
30
31
private: explicit CPDFSDK_FileWriteAdapter(FPDF_FILEWRITE* file_write); ~CPDFSDK_FileWriteAdapter() override; UnownedPtr<FPDF_FILEWRITE> file_write_; }; #endif // FPDFSDK_CPDFSDK_FILEWRITEADAPTER_H_

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #14
- VerifySavedDocument(612, 792, kAllBlackMd5sum); + VerifySavedDocument(612, 792, kAllBlackChecksum); -// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_AddPaths DISABLED_AddPaths -#else -#define MAYBE_AddPaths AddPaths -#endif -TEST_F(FPDFEditEmbedderTest, MAYBE_AddPaths) { +TEST_F(FPDFEditEmbedderTest, AddPaths) {
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
225
226
227
228
229
230
231
232
233
234
FPDFPage_InsertObject(temp_page, temp_img); EXPECT_TRUE(FPDFPage_GenerateContent(temp_page)); EXPECT_TRUE(FPDF_SaveAsCopy(temp_doc, this, 0)); FPDF_ClosePage(temp_page); FPDF_CloseDocument(temp_doc); } // Get the generated content. Make sure it is at least as big as the original // PDF. EXPECT_GT(GetString().size(), 923u);
+ show +
235
236
237
238
239
240
241
242
243
244
VerifySavedDocument(612, 792, kAllBlackMd5sum); } // TODO(crbug.com/pdfium/11): Fix this test and enable. #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_AddPaths DISABLED_AddPaths #else #define MAYBE_AddPaths AddPaths #endif TEST_F(FPDFEditEmbedderTest, MAYBE_AddPaths) {
+ show +
245
246
247
248
249
250
251
252
253
254
// Start with a blank page FPDF_PAGE page = FPDFPage_New(CreateNewDocument(), 0, 612, 792); ASSERT_TRUE(page); // We will first add a red rectangle FPDF_PAGEOBJECT red_rect = FPDFPageObj_CreateNewRect(10, 10, 20, 20); ASSERT_TRUE(red_rect); // Expect false when trying to set colors out of range EXPECT_FALSE(FPDFPageObj_SetStrokeColor(red_rect, 100, 100, 100, 300)); EXPECT_FALSE(FPDFPageObj_SetFillColor(red_rect, 200, 256, 200, 0));

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #23
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_SetText DISABLED_SetText -#else -#define MAYBE_SetText SetText -#endif -TEST_F(FPDFEditEmbedderTest, MAYBE_SetText) { +TEST_F(FPDFEditEmbedderTest, BUG_1549) { + static const char kOriginalChecksum[] = "126366fb95e6caf8ea196780075b22b2"; + static const char kRemovedChecksum[] = "6ec2f27531927882624b37bc7d8e12f4"; + + ASSERT_TRUE(OpenDocument("bug_1549.pdf")); + FPDF_PAGE page = LoadPage(0); + + { + ScopedFPDFBitmap bitmap = RenderLoadedPage(page); + CompareBitmap(bitmap.get(), 100, 150, kOriginalChecksum); + + ScopedFPDFPageObject obj(FPDFPage_GetObject(page, 0)); + ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj.get())); + ASSERT_TRUE(FPDFPage_RemoveObject(page, obj.get())); + } + + ASSERT_TRUE(FPDFPage_GenerateContent(page)); + + { + ScopedFPDFBitmap bitmap = RenderLoadedPage(page); + CompareBitmap(bitmap.get(), 100, 150, kRemovedChecksum); + } + + ASSERT_TRUE(FPDF_SaveAsCopy(document(), this, 0)); + UnloadPage(page); + + // TODO(crbug.com/pdfium/1549): Should be `kRemovedChecksum`. + VerifySavedDocument(100, 150, "4f9889cd5993db20f1ab37d677ac8d26"); +} + +TEST_F(FPDFEditEmbedderTest, SetText) { - EXPECT_TRUE(OpenDocument("hello_world.pdf")); + ASSERT_TRUE(OpenDocument("hello_world.pdf"));
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
546
547
548
549
550
551
552
553
554
555
ASSERT_TRUE(clip_path); EXPECT_EQ(-1, FPDFClipPath_CountPaths(clip_path)); EXPECT_EQ(-1, FPDFClipPath_CountPathSegments(clip_path, 0)); EXPECT_FALSE(FPDFClipPath_GetPathSegment(clip_path, 0, 0)); UnloadPage(page); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
556
557
558
559
560
561
562
563
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_SetText DISABLED_SetText #else #define MAYBE_SetText SetText #endif TEST_F(FPDFEditEmbedderTest, MAYBE_SetText) { // Load document with some text. EXPECT_TRUE(OpenDocument("hello_world.pdf"));
+ show +
564
565
566
567
568
569
570
571
572
573
FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); // Get the "Hello, world!" text object and change it. ASSERT_EQ(2, FPDFPage_CountObjects(page)); FPDF_PAGEOBJECT page_object = FPDFPage_GetObject(page, 0); ASSERT_TRUE(page_object); ScopedFPDFWideString text1 = GetFPDFWideString(L"Changed for SetText test"); EXPECT_TRUE(FPDFText_SetText(page_object, text1.get()));

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #39
+ ASSERT_TRUE(saved_page); -// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_RemoveExistingPageObjectSplitStreamsNotLonely \ - DISABLED_RemoveExistingPageObjectSplitStreamsNotLonely -#else -#define MAYBE_RemoveExistingPageObjectSplitStreamsNotLonely \ - RemoveExistingPageObjectSplitStreamsNotLonely -#endif -TEST_F(FPDFEditEmbedderTest, - MAYBE_RemoveExistingPageObjectSplitStreamsNotLonely) { +TEST_F(FPDFEditEmbedderTest, RemoveExistingPageObjectSplitStreamsNotLonely) { - EXPECT_TRUE(OpenDocument("hello_world_split_streams.pdf")); + ASSERT_TRUE(OpenDocument("hello_world_split_streams.pdf"));
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
// Re-open the file and check the page object count is still 1. ASSERT_TRUE(OpenSavedDocument()); FPDF_PAGE saved_page = LoadSavedPage(0); EXPECT_EQ(1, FPDFPage_CountObjects(saved_page)); CloseSavedPage(saved_page); CloseSavedDocument(); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_RemoveExistingPageObjectSplitStreamsNotLonely \ DISABLED_RemoveExistingPageObjectSplitStreamsNotLonely #else #define MAYBE_RemoveExistingPageObjectSplitStreamsNotLonely \ RemoveExistingPageObjectSplitStreamsNotLonely #endif TEST_F(FPDFEditEmbedderTest, MAYBE_RemoveExistingPageObjectSplitStreamsNotLonely) { // Load document with some text. EXPECT_TRUE(OpenDocument("hello_world_split_streams.pdf"));
+ show +
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); // Get the "Hello, world!" text object and remove it. There is another object // in the same stream that says "Goodbye, world!" ASSERT_EQ(3, FPDFPage_CountObjects(page)); FPDF_PAGEOBJECT page_object = FPDFPage_GetObject(page, 0); ASSERT_TRUE(page_object); EXPECT_TRUE(FPDFPage_RemoveObject(page, page_object));

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #45
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_RemoveAllFromStream DISABLED_RemoveAllFromStream -#else -#define MAYBE_RemoveAllFromStream RemoveAllFromStream -#endif -TEST_F(FPDFEditEmbedderTest, MAYBE_RemoveAllFromStream) { +TEST_F(FPDFEditEmbedderTest, RemoveAllFromStream) { - EXPECT_TRUE(OpenDocument("split_streams.pdf")); + ASSERT_TRUE(OpenDocument("split_streams.pdf"));
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
else if (i < 18) EXPECT_EQ(1, cpdf_page_object->GetContentStream()) << i; else EXPECT_EQ(2, cpdf_page_object->GetContentStream()) << i; } UnloadPage(page); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
1229
1230
1231
1232
1233
1234
1235
1236
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_RemoveAllFromStream DISABLED_RemoveAllFromStream #else #define MAYBE_RemoveAllFromStream RemoveAllFromStream #endif TEST_F(FPDFEditEmbedderTest, MAYBE_RemoveAllFromStream) { // Load document with some text split across streams. EXPECT_TRUE(OpenDocument("split_streams.pdf"));
+ show +
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); // Content stream 0: page objects 0-14. // Content stream 1: page objects 15-17. // Content stream 2: page object 18. ASSERT_EQ(19, FPDFPage_CountObjects(page)); // Loop backwards because objects will being removed, which shifts the indexes // after the removed position.

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #73
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_PathOnTopOfText DISABLED_PathOnTopOfText -#else -#define MAYBE_PathOnTopOfText PathOnTopOfText -#endif -TEST_F(FPDFEditEmbedderTest, MAYBE_PathOnTopOfText) { +TEST_F(FPDFEditEmbedderTest, PathOnTopOfText) { - EXPECT_TRUE(OpenDocument("hello_world.pdf")); + ASSERT_TRUE(OpenDocument("hello_world.pdf"));
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
// FPDFPathSegment_GetType() with a NULL segment. ASSERT_EQ(FPDF_SEGMENT_UNKNOWN, FPDFPathSegment_GetType(nullptr)); // FPDFPathSegment_GetClose() with a NULL segment. EXPECT_FALSE(FPDFPathSegment_GetClose(nullptr)); FPDFPageObj_Destroy(img); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
1802
1803
1804
1805
1806
1807
1808
1809
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_PathOnTopOfText DISABLED_PathOnTopOfText #else #define MAYBE_PathOnTopOfText PathOnTopOfText #endif TEST_F(FPDFEditEmbedderTest, MAYBE_PathOnTopOfText) { // Load document with some text EXPECT_TRUE(OpenDocument("hello_world.pdf"));
+ show +
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); // Add an opaque rectangle on top of some of the text. FPDF_PAGEOBJECT red_rect = FPDFPageObj_CreateNewRect(20, 100, 50, 50); EXPECT_TRUE(FPDFPageObj_SetFillColor(red_rect, 255, 0, 0, 255)); EXPECT_TRUE(FPDFPath_SetDrawMode(red_rect, FPDF_FILLMODE_ALTERNATE, 0)); FPDFPage_InsertObject(page, red_rect); // Add a transparent triangle on top of other part of the text.

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #105
- VerifySavedDocument(612, 792, md5); + VerifySavedDocument(612, 792, kChecksum); -#endif // _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ +#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_SaveAndRender DISABLED_SaveAndRender -#else -#define MAYBE_SaveAndRender SaveAndRender -#endif -TEST_F(FPDFEditEmbedderTest, MAYBE_SaveAndRender) { - const char md5[] = "3c20472b0552c0c22b88ab1ed8c6202b"; +TEST_F(FPDFEditEmbedderTest, SaveAndRender) { + const char* checksum = []() { + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) + return "9a78649e85e69d220c22e0fc316da740"; + return "3c20472b0552c0c22b88ab1ed8c6202b"; + }(); - EXPECT_TRUE(OpenDocument("bug_779.pdf")); + ASSERT_TRUE(OpenDocument("bug_779.pdf")); - // Now add a more complex blue path. + // Now add a more complex green path. - // TODO(npm): stroking will cause the MD5s to differ. + // TODO(npm): stroking will cause the checksums to differ.
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
{ ScopedFPDFBitmap page_bitmap = RenderPage(page); CompareBitmap(page_bitmap.get(), 612, 792, md5); } // Save the document, close the page. EXPECT_TRUE(FPDFPage_GenerateContent(page)); EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0)); FPDF_ClosePage(page);
+ show +
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
VerifySavedDocument(612, 792, md5); } #endif // _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ // TODO(crbug.com/pdfium/11): Fix this test and enable. #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_SaveAndRender DISABLED_SaveAndRender #else #define MAYBE_SaveAndRender SaveAndRender #endif TEST_F(FPDFEditEmbedderTest, MAYBE_SaveAndRender) { const char md5[] = "3c20472b0552c0c22b88ab1ed8c6202b"; { EXPECT_TRUE(OpenDocument("bug_779.pdf"));
+ show +
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
FPDF_PAGE page = LoadPage(0); ASSERT_NE(nullptr, page); // Now add a more complex blue path. FPDF_PAGEOBJECT green_path = FPDFPageObj_CreateNewPath(20, 20); EXPECT_TRUE(FPDFPageObj_SetFillColor(green_path, 0, 255, 0, 200)); // TODO(npm): stroking will cause the MD5s to differ. EXPECT_TRUE(FPDFPath_SetDrawMode(green_path, FPDF_FILLMODE_WINDING, 0)); EXPECT_TRUE(FPDFPath_LineTo(green_path, 20, 63)); EXPECT_TRUE(FPDFPath_BezierTo(green_path, 55, 55, 78, 78, 90, 90));

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #114
+ ASSERT_TRUE(saved_page); -// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_AddMarkedText DISABLED_AddMarkedText -#else -#define MAYBE_AddMarkedText AddMarkedText -#endif -TEST_F(FPDFEditEmbedderTest, MAYBE_AddMarkedText) { +TEST_F(FPDFEditEmbedderTest, AddMarkedText) {
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
EXPECT_TRUE(FPDFPageObjMark_GetParamStringValue( mark, "Position", buffer, sizeof(buffer), &out_buffer_len)); EXPECT_EQ(L"End", GetPlatformWString(reinterpret_cast<unsigned short*>(buffer))); CloseSavedPage(saved_page); CloseSavedDocument(); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
2913
2914
2915
2916
2917
2918
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_AddMarkedText DISABLED_AddMarkedText #else #define MAYBE_AddMarkedText AddMarkedText #endif TEST_F(FPDFEditEmbedderTest, MAYBE_AddMarkedText) {
+ show +
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
// Start with a blank page. FPDF_PAGE page = FPDFPage_New(CreateNewDocument(), 0, 612, 792); RetainPtr<CPDF_Font> stock_font = CPDF_Font::GetStockFont(cpdf_doc(), "Arial"); pdfium::span<const uint8_t> span = stock_font->GetFont()->GetFontSpan(); ScopedFPDFFont font(FPDFText_LoadFont(document(), span.data(), span.size(), FPDF_FONT_TRUETYPE, 0)); ASSERT_TRUE(font.get());

[CVE-2023-40093_1.diff] fpdf_edit_embeddertest.cpp #116
-// Render and check the bitmap is the expected one. -#if defined(OS_MACOSX) - const char md5[] = "17d2b6cd574cf66170b09c8927529a94"; -#elif defined(OS_WIN) - const char md5[] = "d60ba39f9698e32360d99e727dd93165"; -#else - const char md5[] = "70592859010ffbf532a2237b8118bcc4"; -#endif + // Render and check the bitmap is the expected one. - CompareBitmap(page_bitmap.get(), 612, 792, md5); + CompareBitmap(page_bitmap.get(), 612, 792, LoadedFontTextChecksum());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_edit_embeddertest.cpp
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
// Add some text to the page FPDF_PAGEOBJECT text_object = FPDFPageObj_CreateTextObj(document(), font.get(), 12.0f); EXPECT_TRUE(text_object); ScopedFPDFWideString text = GetFPDFWideString(L"I am testing my loaded font, WEE."); EXPECT_TRUE(FPDFText_SetText(text_object, text.get())); FPDFPageObj_Transform(text_object, 1, 0, 0, 1, 400, 400); FPDFPage_InsertObject(page, text_object); ScopedFPDFBitmap page_bitmap = RenderPage(page);
+ show +
2604
2605
2606
2607
2608
2609
2610
2611
#if defined(OS_MACOSX) const char md5[] = "17d2b6cd574cf66170b09c8927529a94"; #elif defined(OS_WIN) const char md5[] = "d60ba39f9698e32360d99e727dd93165"; #else const char md5[] = "70592859010ffbf532a2237b8118bcc4"; #endif CompareBitmap(page_bitmap.get(), 612, 792, md5);
+ show +
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
// Add some more text, same font FPDF_PAGEOBJECT text_object2 = FPDFPageObj_CreateTextObj(document(), font.get(), 15.0f); ScopedFPDFWideString text2 = GetFPDFWideString(L"Bigger font size"); EXPECT_TRUE(FPDFText_SetText(text_object2, text2.get())); FPDFPageObj_Transform(text_object2, 1, 0, 0, 1, 200, 200); FPDFPage_InsertObject(page, text_object2); } ScopedFPDFBitmap page_bitmap2 = RenderPage(page);

[CVE-2023-40093_1.diff] fpdf_annot.cpp #9
+const CPDFSDK_Widget* GetRadioButtonOrCheckBoxWidget(FPDF_FORMHANDLE hHandle, + FPDF_ANNOTATION annot) { + const CPDF_Dictionary* pAnnotDict = GetAnnotDictFromFPDFAnnotation(annot); + if (!pAnnotDict) + return nullptr; + + CPDFSDK_InteractiveForm* pForm = FormHandleToInteractiveForm(hHandle); + if (!pForm) + return nullptr; + + CPDF_InteractiveForm* pPDFForm = pForm->GetInteractiveForm(); + CPDF_FormField* pFormField = pPDFForm->GetFieldByDict(pAnnotDict); + if (!pFormField || (pFormField->GetType() != CPDF_FormField::kCheckBox && + pFormField->GetType() != CPDF_FormField::kRadioButton)) { + return nullptr; + } + + CPDF_FormControl* pFormControl = pPDFForm->GetControlByDict(pAnnotDict); + return pFormControl ? pForm->GetWidget(pFormControl) : nullptr; +} + +RetainPtr<const CPDF_Array> GetInkList(FPDF_ANNOTATION annot) { + FPDF_ANNOTATION_SUBTYPE subtype = FPDFAnnot_GetSubtype(annot); + if (subtype != FPDF_ANNOT_INK) + return nullptr; + + const CPDF_Dictionary* annot_dict = GetAnnotDictFromFPDFAnnotation(annot); + return annot_dict ? annot_dict->GetArrayFor(pdfium::annotation::kInkList) + : nullptr; +} + - return subtype == FPDF_ANNOT_CIRCLE || subtype == FPDF_ANNOT_FREETEXT || - subtype == FPDF_ANNOT_HIGHLIGHT || subtype == FPDF_ANNOT_INK || - subtype == FPDF_ANNOT_POPUP || subtype == FPDF_ANNOT_SQUARE || - subtype == FPDF_ANNOT_SQUIGGLY || subtype == FPDF_ANNOT_STAMP || - subtype == FPDF_ANNOT_STRIKEOUT || subtype == FPDF_ANNOT_TEXT || - subtype == FPDF_ANNOT_UNDERLINE; + switch (subtype) { + case FPDF_ANNOT_CIRCLE: + case FPDF_ANNOT_FREETEXT: + case FPDF_ANNOT_HIGHLIGHT: + case FPDF_ANNOT_INK: + case FPDF_ANNOT_LINK: + case FPDF_ANNOT_POPUP: + case FPDF_ANNOT_SQUARE: + case FPDF_ANNOT_SQUIGGLY: + case FPDF_ANNOT_STAMP: + case FPDF_ANNOT_STRIKEOUT: + case FPDF_ANNOT_TEXT: + case FPDF_ANNOT_UNDERLINE: + return true; + default: + return false; + }
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_annot.cpp
267
268
269
270
271
272
273
274
275
276
CPDF_InteractiveForm* pPDFForm = pForm->GetInteractiveForm(); return pPDFForm->GetFieldByDict(pAnnotDict); } } // namespace FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFAnnot_IsSupportedSubtype(FPDF_ANNOTATION_SUBTYPE subtype) { // The supported subtypes must also be communicated in the user doc.
+ show +
277
278
279
280
281
282
return subtype == FPDF_ANNOT_CIRCLE || subtype == FPDF_ANNOT_FREETEXT || subtype == FPDF_ANNOT_HIGHLIGHT || subtype == FPDF_ANNOT_INK || subtype == FPDF_ANNOT_POPUP || subtype == FPDF_ANNOT_SQUARE || subtype == FPDF_ANNOT_SQUIGGLY || subtype == FPDF_ANNOT_STAMP || subtype == FPDF_ANNOT_STRIKEOUT || subtype == FPDF_ANNOT_TEXT || subtype == FPDF_ANNOT_UNDERLINE;
+ show +
283
284
285
286
287
288
289
290
291
292
} FPDF_EXPORT FPDF_ANNOTATION FPDF_CALLCONV FPDFPage_CreateAnnot(FPDF_PAGE page, FPDF_ANNOTATION_SUBTYPE subtype) { CPDF_Page* pPage = CPDFPageFromFPDFPage(page); if (!pPage || !FPDFAnnot_IsSupportedSubtype(subtype)) return nullptr; auto pDict = pPage->GetDocument()->New<CPDF_Dictionary>(); pDict->SetNewFor<CPDF_Name>(pdfium::annotation::kType, "Annot");

[CVE-2023-40093_1.diff] cpdfsdk_appstream.cpp #34
- CFX_Color crBackground; - CFX_Color crBorder; - int iColorType; - float fc[4]; - pControl->GetOriginalBackgroundColor(iColorType, fc); - if (iColorType > 0) - crBackground = CFX_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); - - pControl->GetOriginalBorderColor(iColorType, fc); - if (iColorType > 0) - crBorder = CFX_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); + CFX_Color crBackground = pControl->GetOriginalBackgroundColor(); + CFX_Color crBorder = pControl->GetOriginalBorderColor();
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_appstream.cpp
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
nLayout = ButtonStyle::kIconRightLabelLeft; break; case TEXTPOS_OVERLAID: nLayout = ButtonStyle::kLabelOverIcon; break; default: nLayout = ButtonStyle::kLabel; break; }
+ show +
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
CFX_Color crBackground; CFX_Color crBorder; int iColorType; float fc[4]; pControl->GetOriginalBackgroundColor(iColorType, fc); if (iColorType > 0) crBackground = CFX_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); pControl->GetOriginalBorderColor(iColorType, fc); if (iColorType > 0) crBorder = CFX_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ show +
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
float fBorderWidth = static_cast<float>(widget_->GetBorderWidth()); CPWL_Dash dsBorder(3, 0, 0); CFX_Color crLeftTop; CFX_Color crRightBottom; BorderStyle nBorderStyle = widget_->GetBorderStyle(); switch (nBorderStyle) { case BorderStyle::DASH: dsBorder = CPWL_Dash(3, 3, 0);

[CVE-2023-40093_1.diff] cpdfsdk_appstream.cpp #40
- CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); - Optional<CFX_Color::Type> color = da.GetColor(fc); - if (color) { - iColorType = *color; - crText = CFX_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); - } + absl::optional<CFX_Color> color = pControl->GetDefaultAppearance().GetColor(); + CFX_Color crText = color.value_or(CFX_Color()); - CheckStyle nStyle = CheckStyle::kCheck; - WideString csWCaption = pControl->GetNormalCaption(); - if (csWCaption.GetLength() > 0) { - switch (csWCaption[0]) { - case L'l': - nStyle = CheckStyle::kCircle; - break; - case L'8': - nStyle = CheckStyle::kCross; - break; - case L'u': - nStyle = CheckStyle::kDiamond; - break; - case L'n': - nStyle = CheckStyle::kSquare; - break; - case L'H': - nStyle = CheckStyle::kStar; - break; - case L'4': - default: - nStyle = CheckStyle::kCheck; - } - } - + CheckStyle nStyle = CheckStyleFromCaption(pControl->GetNormalCaption()) + .value_or(CheckStyle::kCheck);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_appstream.cpp
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
fBorderWidth *= 2; crLeftTop = CFX_Color(CFX_Color::kGray, 0.5); crRightBottom = CFX_Color(CFX_Color::kGray, 0.75); break; default: break; } CFX_FloatRect rcWindow = widget_->GetRotatedRect(); CFX_FloatRect rcClient = rcWindow.GetDeflated(fBorderWidth, fBorderWidth);
+ show +
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); Optional<CFX_Color::Type> color = da.GetColor(fc); if (color) { iColorType = *color; crText = CFX_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); } CheckStyle nStyle = CheckStyle::kCheck; WideString csWCaption = pControl->GetNormalCaption(); if (csWCaption.GetLength() > 0) { switch (csWCaption[0]) { case L'l': nStyle = CheckStyle::kCircle; break; case L'8': nStyle = CheckStyle::kCross; break; case L'u': nStyle = CheckStyle::kDiamond; break; case L'n': nStyle = CheckStyle::kSquare; break; case L'H': nStyle = CheckStyle::kStar; break; case L'4': default: nStyle = CheckStyle::kCheck;
+ show +
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
} } ByteString csAP_N_ON = GetRectFillAppStream(rcWindow, crBackground) + GetBorderAppStreamInternal(rcWindow, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, dsBorder); ByteString csAP_N_OFF = csAP_N_ON;

[CVE-2023-40093_1.diff] fpdf_text_embeddertest.cpp #3
- EXPECT_NEAR(41.071, left, 0.001); - EXPECT_NEAR(46.243, right, 0.001); - EXPECT_NEAR(49.844, bottom, 0.001); - EXPECT_NEAR(55.520, top, 0.001); + EXPECT_NEAR(41.120, left, 0.001); + EXPECT_NEAR(46.208, right, 0.001); + EXPECT_NEAR(49.892, bottom, 0.001); + EXPECT_NEAR(55.652, top, 0.001);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_text_embeddertest.cpp
113
114
115
116
117
118
119
120
121
122
EXPECT_FALSE( FPDFText_GetCharBox(textpage, 4, nullptr, &right, &bottom, &top)); EXPECT_FALSE(FPDFText_GetCharBox(textpage, 4, &left, nullptr, &bottom, &top)); EXPECT_FALSE(FPDFText_GetCharBox(textpage, 4, &left, &right, nullptr, &top)); EXPECT_FALSE( FPDFText_GetCharBox(textpage, 4, &left, &right, &bottom, nullptr)); EXPECT_FALSE( FPDFText_GetCharBox(textpage, 4, nullptr, nullptr, nullptr, nullptr)); EXPECT_TRUE(FPDFText_GetCharBox(textpage, 4, &left, &right, &bottom, &top));
+ show +
123
124
125
126
EXPECT_NEAR(41.071, left, 0.001); EXPECT_NEAR(46.243, right, 0.001); EXPECT_NEAR(49.844, bottom, 0.001); EXPECT_NEAR(55.520, top, 0.001);
+ show +
127
128
129
130
131
132
133
134
135
136
FS_RECTF rect = {4.0f, 1.0f, 3.0f, 2.0f}; EXPECT_FALSE(FPDFText_GetLooseCharBox(nullptr, 4, &rect)); EXPECT_FLOAT_EQ(4.0f, rect.left); EXPECT_FLOAT_EQ(3.0f, rect.right); EXPECT_FLOAT_EQ(2.0f, rect.bottom); EXPECT_FLOAT_EQ(1.0f, rect.top); EXPECT_FALSE(FPDFText_GetLooseCharBox(textpage, -1, &rect)); EXPECT_FLOAT_EQ(4.0f, rect.left); EXPECT_FLOAT_EQ(3.0f, rect.right);

[CVE-2023-40093_1.diff] fpdf_text_embeddertest.cpp #4
- EXPECT_NEAR(20.847, left, 0.001); - EXPECT_NEAR(135.167, right, 0.001); - EXPECT_NEAR(96.655, bottom, 0.001); - EXPECT_NEAR(116.000, top, 0.001); + EXPECT_NEAR(20.800, left, 0.001); + EXPECT_NEAR(135.040, right, 0.001); + EXPECT_NEAR(96.688, bottom, 0.001); + EXPECT_NEAR(111.600, top, 0.001);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_text_embeddertest.cpp
165
166
167
168
169
170
171
172
173
174
EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(textpage, -1.0, 50.0, 1.0, 1.0)); // Count does not include the terminating NUL in the string literal. EXPECT_EQ(2, FPDFText_CountRects(textpage, 0, kHelloGoodbyeTextSize - 1)); left = 0.0; right = 0.0; bottom = 0.0; top = 0.0; EXPECT_TRUE(FPDFText_GetRect(textpage, 1, &left, &top, &right, &bottom));
+ show +
175
176
177
178
EXPECT_NEAR(20.847, left, 0.001); EXPECT_NEAR(135.167, right, 0.001); EXPECT_NEAR(96.655, bottom, 0.001); EXPECT_NEAR(116.000, top, 0.001);
+ show +
179
180
181
182
183
184
185
186
187
188
// Test out of range indicies set outputs to (0.0, 0.0, 0.0, 0.0). left = -1.0; right = -1.0; bottom = -1.0; top = -1.0; EXPECT_FALSE(FPDFText_GetRect(textpage, -1, &left, &top, &right, &bottom)); EXPECT_EQ(0.0, left); EXPECT_EQ(0.0, right); EXPECT_EQ(0.0, bottom);

[CVE-2023-40093_1.diff] fpdf_text_embeddertest.cpp #8
- EXPECT_NEAR(50.791, left, 0.001); - EXPECT_NEAR(187.963, right, 0.001); - EXPECT_NEAR(97.624, bottom, 0.001); - EXPECT_NEAR(108.736, top, 0.001); + EXPECT_NEAR(50.828, left, 0.001); + EXPECT_NEAR(187.904, right, 0.001); + EXPECT_NEAR(97.516, bottom, 0.001); + EXPECT_NEAR(108.700, top, 0.001);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_text_embeddertest.cpp
586
587
588
589
590
591
592
593
594
595
EXPECT_EQ(0, FPDFLink_CountRects(pagelink, -1)); EXPECT_EQ(0, FPDFLink_CountRects(pagelink, 2)); EXPECT_EQ(0, FPDFLink_CountRects(pagelink, 10000)); // Check boundary of valid link index with valid rect index. double left = 0.0; double right = 0.0; double top = 0.0; double bottom = 0.0; EXPECT_TRUE(FPDFLink_GetRect(pagelink, 0, 0, &left, &top, &right, &bottom));
+ show +
596
597
598
599
EXPECT_NEAR(50.791, left, 0.001); EXPECT_NEAR(187.963, right, 0.001); EXPECT_NEAR(97.624, bottom, 0.001); EXPECT_NEAR(108.736, top, 0.001);
+ show +
600
601
602
603
604
605
606
607
608
609
// Check that valid link with invalid rect index leaves parameters unchanged. left = -1.0; right = -1.0; top = -1.0; bottom = -1.0; EXPECT_FALSE(FPDFLink_GetRect(pagelink, 0, 1, &left, &top, &right, &bottom)); EXPECT_EQ(-1.0, left); EXPECT_EQ(-1.0, right); EXPECT_EQ(-1.0, bottom);

[CVE-2023-40093_1.diff] fpdf_text_embeddertest.cpp #26
- { - // Check the character box size. - double left; - double right; - double bottom; - double top; - ASSERT_TRUE(FPDFText_GetCharBox(text_page.get(), 0, &left, &right, - &bottom, &top)); - EXPECT_NEAR(kExpectedCharWidth, right - left, 0.001); - EXPECT_NEAR(kExpectedCharHeight, top - bottom, 0.001); - ASSERT_TRUE(FPDFText_GetCharBox(text_page.get(), 4, &left, &right, - &bottom, &top)); - EXPECT_NEAR(kExpectedCharWidth, right - left, 0.001); - EXPECT_NEAR(kExpectedCharHeight, top - bottom, 0.001); - ASSERT_TRUE(FPDFText_GetCharBox(text_page.get(), 8, &left, &right, - &bottom, &top)); - EXPECT_NEAR(kExpectedCharWidth, right - left, 0.001); - EXPECT_NEAR(kExpectedCharHeight, top - bottom, 0.001); - } -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_text_embeddertest.cpp
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
// Check the characters. unsigned short buffer[kExpectedTextSize]; ASSERT_EQ(static_cast<int>(kExpectedTextSize), FPDFText_GetText(text_page.get(), 0, kExpectedCount, buffer)); EXPECT_TRUE( check_unsigned_shorts(kExpectedText, buffer, kExpectedTextSize)); } { // Check the character box size.
+ show +
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
double left; double right; double bottom; double top; ASSERT_TRUE(FPDFText_GetCharBox(text_page.get(), 0, &left, &right, &bottom, &top)); EXPECT_NEAR(kExpectedCharWidth, right - left, 0.001); EXPECT_NEAR(kExpectedCharHeight, top - bottom, 0.001); ASSERT_TRUE(FPDFText_GetCharBox(text_page.get(), 4, &left, &right, &bottom, &top)); EXPECT_NEAR(kExpectedCharWidth, right - left, 0.001); EXPECT_NEAR(kExpectedCharHeight, top - bottom, 0.001); ASSERT_TRUE(FPDFText_GetCharBox(text_page.get(), 8, &left, &right, &bottom, &top)); EXPECT_NEAR(kExpectedCharWidth, right - left, 0.001); EXPECT_NEAR(kExpectedCharHeight, top - bottom, 0.001);
+ show +
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
} // Check the character matrix. FS_MATRIX matrix; for (size_t i = 0; i < kExpectedCount; ++i) { ASSERT_TRUE(FPDFText_GetMatrix(text_page.get(), i, &matrix)) << i; EXPECT_FLOAT_EQ(kExpectedMatrices[i].a, matrix.a) << i; EXPECT_FLOAT_EQ(kExpectedMatrices[i].b, matrix.b) << i; EXPECT_FLOAT_EQ(kExpectedMatrices[i].c, matrix.c) << i; EXPECT_FLOAT_EQ(kExpectedMatrices[i].d, matrix.d) << i;

[CVE-2023-40093_1.diff] fpdf_editpath.cpp #9
-FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetMatrix(FPDF_PAGEOBJECT path, - FS_MATRIX* matrix) { - if (!path || !matrix) - return false; - - CPDF_PathObject* pPathObj = CPDFPathObjectFromFPDFPageObject(path); - if (!pPathObj) - return false; - - *matrix = FSMatrixFromCFXMatrix(pPathObj->matrix()); - return true; -} - -FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV -FPDFPath_SetMatrix(FPDF_PAGEOBJECT path, const FS_MATRIX* matrix) { - if (!matrix) - return false; - - CPDF_PathObject* pPathObj = CPDFPathObjectFromFPDFPageObject(path); - if (!pPathObj) - return false; - - pPathObj->set_matrix(CFXMatrixFromFSMatrix(*matrix)); - pPathObj->SetDirty(true); - return true; -} -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editpath.cpp
174
175
176
177
178
179
180
181
182
183
*fillmode = FPDF_FILLMODE_ALTERNATE; else if (pPathObj->has_winding_filltype()) *fillmode = FPDF_FILLMODE_WINDING; else *fillmode = FPDF_FILLMODE_NONE; *stroke = pPathObj->stroke(); return true; }
+ show +
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetMatrix(FPDF_PAGEOBJECT path, FS_MATRIX* matrix) { if (!path || !matrix) return false; CPDF_PathObject* pPathObj = CPDFPathObjectFromFPDFPageObject(path); if (!pPathObj) return false; *matrix = FSMatrixFromCFXMatrix(pPathObj->matrix()); return true; } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetMatrix(FPDF_PAGEOBJECT path, const FS_MATRIX* matrix) { if (!matrix) return false; CPDF_PathObject* pPathObj = CPDFPathObjectFromFPDFPageObject(path); if (!pPathObj) return false; pPathObj->set_matrix(CFXMatrixFromFSMatrix(*matrix)); pPathObj->SetDirty(true); return true;
+ show +
209
210
211
212
213
214
215
216
217
218
} FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPathSegment_GetPoint(FPDF_PATHSEGMENT segment, float* x, float* y) { auto* pPathPoint = FXPathPointFromFPDFPathSegment(segment); if (!pPathPoint || !x || !y) return false; *x = pPathPoint->m_Point.x; *y = pPathPoint->m_Point.y;

[CVE-2023-40093_1.diff] cpdfsdk_pageview.cpp #4
- // The call to |ReleaseAnnot| can cause the page pointed to by |m_page| to - // be freed, which will cause issues if we try to cleanup the pageview - // pointer in |m_page|. So, reset the pageview pointer before doing anything - // else. + // Deleting from `m_SDKAnnotArray` below can cause the page pointed to by + // `m_page` to be freed, which will cause issues if we try to cleanup the + // pageview pointer in `m_page`. So, reset the pageview pointer before doing + // anything else. - CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = - m_pFormFillEnv->GetAnnotHandlerMgr(); - for (CPDFSDK_Annot* pAnnot : m_SDKAnnotArray) - pAnnotHandlerMgr->ReleaseAnnot(pdfium::WrapUnique(pAnnot)); + // Manually reset elements to ensure they are deleted in order. + for (std::unique_ptr<CPDFSDK_Annot>& pAnnot : m_SDKAnnotArray) + pAnnot.reset(); +void CPDFSDK_PageView::ClearPage(CPDF_Page* pPage) { + if (!IsBeingDestroyed()) + GetFormFillEnv()->RemovePageView(pPage); +} +
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_pageview.cpp
46
47
48
49
50
51
52
53
54
55
CPDFSDK_PageView::~CPDFSDK_PageView() { if (!m_page->AsXFAPage()) { // The call to |ReleaseAnnot| can cause the page pointed to by |m_page| to // be freed, which will cause issues if we try to cleanup the pageview // pointer in |m_page|. So, reset the pageview pointer before doing anything // else. m_page->AsPDFPage()->SetView(nullptr); }
+ show +
56
57
58
59
CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = m_pFormFillEnv->GetAnnotHandlerMgr(); for (CPDFSDK_Annot* pAnnot : m_SDKAnnotArray) pAnnotHandlerMgr->ReleaseAnnot(pdfium::WrapUnique(pAnnot));
+ show +
60
61
62
63
64
65
66
67
68
69
m_SDKAnnotArray.clear(); m_pAnnotList.reset(); } void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice, const CFX_Matrix& mtUser2Device, CPDF_RenderOptions* pOptions, const FX_RECT& pClip) { m_curMatrix = mtUser2Device;

[CVE-2023-40093_1.diff] cpdfsdk_annot.cpp #4
-CPDF_Annot::Subtype CPDFSDK_Annot::GetAnnotSubtype() const { - return CPDF_Annot::Subtype::UNKNOWN; -} - -bool CPDFSDK_Annot::IsSignatureWidget() const { - return false; -} - -void CPDFSDK_Annot::SetRect(const CFX_FloatRect& rect) {} - -CFX_FloatRect CPDFSDK_Annot::GetRect() const { - return CFX_FloatRect(); -} -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_annot.cpp
32
33
34
35
36
37
38
39
40
41
} int CPDFSDK_Annot::GetLayoutOrder() const { return 5; } CPDF_Annot* CPDFSDK_Annot::GetPDFAnnot() const { return nullptr; }
+ show +
42
43
44
45
46
47
48
49
50
51
52
53
CPDF_Annot::Subtype CPDFSDK_Annot::GetAnnotSubtype() const { return CPDF_Annot::Subtype::UNKNOWN; } bool CPDFSDK_Annot::IsSignatureWidget() const { return false; } void CPDFSDK_Annot::SetRect(const CFX_FloatRect& rect) {} CFX_FloatRect CPDFSDK_Annot::GetRect() const { return CFX_FloatRect();
+ show +
54
55
56
57
58
59
60
61
62
63
} IPDF_Page* CPDFSDK_Annot::GetPage() { #ifdef PDF_ENABLE_XFA IPDF_Page* pXFAPage = GetXFAPage(); if (pXFAPage) return pXFAPage; #endif // PDF_ENABLE_XFA return GetPDFPage(); }

[CVE-2023-40093_1.diff] fpdf_ppo.cpp #5
- ASSERT(m_nPagesOnXAxis > 0); - ASSERT(m_nPagesOnYAxis > 0); - ASSERT(m_destPageSize.width > 0); - ASSERT(m_destPageSize.height > 0); + DCHECK(m_nPagesOnXAxis > 0); + DCHECK(m_nPagesOnYAxis > 0); + DCHECK(m_destPageSize.width > 0); + DCHECK(m_destPageSize.height > 0);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_ppo.cpp
80
81
82
83
84
85
86
87
88
89
size_t m_subPageIndex = 0; }; NupState::NupState(const CFX_SizeF& pagesize, size_t nPagesOnXAxis, size_t nPagesOnYAxis) : m_destPageSize(pagesize), m_nPagesOnXAxis(nPagesOnXAxis), m_nPagesOnYAxis(nPagesOnYAxis), m_nPagesPerSheet(nPagesOnXAxis * nPagesOnYAxis) {
+ show +
90
91
92
93
ASSERT(m_nPagesOnXAxis > 0); ASSERT(m_nPagesOnYAxis > 0); ASSERT(m_destPageSize.width > 0); ASSERT(m_destPageSize.height > 0);
+ show +
94
95
96
97
98
99
100
101
102
103
m_subPageSize.width = m_destPageSize.width / m_nPagesOnXAxis; m_subPageSize.height = m_destPageSize.height / m_nPagesOnYAxis; } std::pair<size_t, size_t> NupState::ConvertPageOrder() const { size_t iSubX = m_subPageIndex % m_nPagesOnXAxis; size_t iSubY = m_subPageIndex / m_nPagesOnXAxis; // Y Axis, pages start from the top of the output page.

[CVE-2023-40093_1.diff] fpdf_ppo.cpp #10
- bool UpdateReference(CPDF_Object* pObj); + bool UpdateReference(RetainPtr<CPDF_Object> pObj); - CPDF_Document* dest() { return m_pDestDoc.Get(); } - const CPDF_Document* dest() const { return m_pDestDoc.Get(); } + CPDF_Document* dest() { return m_pDestDoc; } + const CPDF_Document* dest() const { return m_pDestDoc; } - CPDF_Document* src() { return m_pSrcDoc.Get(); } - const CPDF_Document* src() const { return m_pSrcDoc.Get(); } + CPDF_Document* src() { return m_pSrcDoc; } + const CPDF_Document* src() const { return m_pSrcDoc; }
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_ppo.cpp
273
274
275
276
277
278
279
280
281
282
} class CPDF_PageOrganizer { protected: CPDF_PageOrganizer(CPDF_Document* pDestDoc, CPDF_Document* pSrcDoc); ~CPDF_PageOrganizer(); // Must be called after construction before doing anything else. bool Init();
+ show +
283
284
285
286
287
288
289
bool UpdateReference(CPDF_Object* pObj); CPDF_Document* dest() { return m_pDestDoc.Get(); } const CPDF_Document* dest() const { return m_pDestDoc.Get(); } CPDF_Document* src() { return m_pSrcDoc.Get(); } const CPDF_Document* src() const { return m_pSrcDoc.Get(); }
+ show +
290
291
292
293
294
295
296
297
298
299
void AddObjectMapping(uint32_t dwOldPageObj, uint32_t dwNewPageObj) { m_ObjectNumberMap[dwOldPageObj] = dwNewPageObj; } void ClearObjectNumberMap() { m_ObjectNumberMap.clear(); } private: uint32_t GetNewObjId(CPDF_Reference* pRef);

[CVE-2023-40093_1.diff] fpdf_flatten.cpp #15
- CPDF_Dictionary* pRes = - pPageDict->GetDictFor(pdfium::page_object::kResources); - if (!pRes) { - pRes = - pPageDict->SetNewFor<CPDF_Dictionary>(pdfium::page_object::kResources); - } - - CPDF_Stream* pNewXObject = pDocument->NewIndirect<CPDF_Stream>( - nullptr, 0, pDocument->New<CPDF_Dictionary>()); - - CPDF_Dictionary* pPageXObject = pRes->GetDictFor("XObject"); - if (!pPageXObject) - pPageXObject = pRes->SetNewFor<CPDF_Dictionary>("XObject"); + RetainPtr<CPDF_Dictionary> pRes = + pPageDict->GetOrCreateDictFor(pdfium::page_object::kResources); + auto pNewXObject = + pDocument->NewIndirect<CPDF_Stream>(pDocument->New<CPDF_Dictionary>()); + RetainPtr<CPDF_Dictionary> pPageXObject = pRes->GetOrCreateDictFor("XObject");
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_flatten.cpp
279
280
281
282
283
284
285
286
287
288
rcOriginalCB = rcOriginalMB; rcMerger.left = std::max(rcMerger.left, rcOriginalMB.left); rcMerger.right = std::min(rcMerger.right, rcOriginalMB.right); rcMerger.bottom = std::max(rcMerger.bottom, rcOriginalMB.bottom); rcMerger.top = std::min(rcMerger.top, rcOriginalMB.top); pPageDict->SetRectFor(pdfium::page_object::kMediaBox, rcOriginalMB); pPageDict->SetRectFor(pdfium::page_object::kCropBox, rcOriginalCB);
+ show +
289
290
291
292
293
294
295
296
297
298
299
300
301
CPDF_Dictionary* pRes = pPageDict->GetDictFor(pdfium::page_object::kResources); if (!pRes) { pRes = pPageDict->SetNewFor<CPDF_Dictionary>(pdfium::page_object::kResources); } CPDF_Stream* pNewXObject = pDocument->NewIndirect<CPDF_Stream>( nullptr, 0, pDocument->New<CPDF_Dictionary>()); CPDF_Dictionary* pPageXObject = pRes->GetDictFor("XObject"); if (!pPageXObject) pPageXObject = pRes->SetNewFor<CPDF_Dictionary>("XObject");
+ show +
302
303
304
305
306
307
308
309
310
311
ByteString key; if (!ObjectArray.empty()) { int i = 0; while (i < INT_MAX) { ByteString sKey = ByteString::Format("FFT%d", i); if (!pPageXObject->KeyExist(sKey)) { key = std::move(sKey); break; }

[CVE-2023-40093_1.diff] fpdf_save_embeddertest.cpp #4
- EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.6\r\n")); - EXPECT_THAT(GetString(), testing::HasSubstr("/Root ")); - EXPECT_THAT(GetString(), testing::HasSubstr("/Info ")); - EXPECT_EQ(8219u, GetString().length()); + EXPECT_THAT(GetString(), StartsWith("%PDF-1.6\r\n")); + EXPECT_THAT(GetString(), HasSubstr("/Root ")); + EXPECT_THAT(GetString(), HasSubstr("/Info ")); + EXPECT_THAT(GetString(), HasSubstr("/Size 37")); + EXPECT_THAT(GetString(), HasSubstr("35 0 obj")); + EXPECT_THAT(GetString(), HasSubstr("36 0 obj")); + EXPECT_THAT(GetString(), Not(HasSubstr("37 0 obj"))); + EXPECT_THAT(GetString(), Not(HasSubstr("38 0 obj"))); + EXPECT_EQ(7908u, GetString().size());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_save_embeddertest.cpp
68
69
70
71
72
73
74
75
76
77
FPDF_PAGE page = LoadPage(i); ASSERT_TRUE(page); ScopedFPDFBitmap bitmap = RenderLoadedPage(page); EXPECT_EQ(612, FPDFBitmap_GetWidth(bitmap.get())); EXPECT_EQ(792, FPDFBitmap_GetHeight(bitmap.get())); original_md5[i] = HashBitmap(bitmap.get()); UnloadPage(page); } EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
+ show +
78
79
80
81
EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.6\r\n")); EXPECT_THAT(GetString(), testing::HasSubstr("/Root ")); EXPECT_THAT(GetString(), testing::HasSubstr("/Info ")); EXPECT_EQ(8219u, GetString().length());
+ show +
82
83
84
85
86
87
88
89
90
91
// Make sure new document renders the same as the old one. ASSERT_TRUE(OpenSavedDocument()); for (int i = 0; i < kPageCount; ++i) { FPDF_PAGE page = LoadSavedPage(i); ASSERT_TRUE(page); ScopedFPDFBitmap bitmap = RenderSavedPage(page); EXPECT_EQ(original_md5[i], HashBitmap(bitmap.get())); CloseSavedPage(page); }

[CVE-2023-40093_1.diff] fpdf_attachment_embeddertest.cpp #4
+#include "testing/gmock/include/gmock/gmock.h" + // Try to retrieve attachments at bad indices. + EXPECT_FALSE(FPDFDoc_GetAttachment(document(), -1)); + EXPECT_FALSE(FPDFDoc_GetAttachment(document(), 2)); + + // Check some unsuccessful cases of FPDFAttachment_GetFile. + EXPECT_FALSE(FPDFAttachment_GetFile(attachment, nullptr, 0, nullptr)); + EXPECT_FALSE(FPDFAttachment_GetFile(nullptr, nullptr, 0, &length_bytes)); + - length_bytes = FPDFAttachment_GetFile(attachment, nullptr, 0); - std::vector<char> content_buf(length_bytes); - ASSERT_EQ( - 4u, FPDFAttachment_GetFile(attachment, content_buf.data(), length_bytes)); - EXPECT_EQ(std::string("test"), std::string(content_buf.data(), 4)); + ASSERT_TRUE(FPDFAttachment_GetFile(attachment, nullptr, 0, &length_bytes)); + std::vector<uint8_t> content_buf(length_bytes); + unsigned long actual_length_bytes; + ASSERT_TRUE(FPDFAttachment_GetFile(attachment, content_buf.data(), + length_bytes, &actual_length_bytes)); + ASSERT_THAT(content_buf, testing::ElementsAre('t', 'e', 's', 't'));
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_attachment_embeddertest.cpp
27
28
29
30
31
32
33
34
35
36
ASSERT_TRUE(attachment); // Check that the name of the first attachment is correct. unsigned long length_bytes = FPDFAttachment_GetName(attachment, nullptr, 0); ASSERT_EQ(12u, length_bytes); std::vector<FPDF_WCHAR> buf = GetFPDFWideStringBuffer(length_bytes); EXPECT_EQ(12u, FPDFAttachment_GetName(attachment, buf.data(), length_bytes)); EXPECT_EQ(L"1.txt", GetPlatformWString(buf.data())); // Check that the content of the first attachment is correct.
+ show +
37
38
39
40
41
length_bytes = FPDFAttachment_GetFile(attachment, nullptr, 0); std::vector<char> content_buf(length_bytes); ASSERT_EQ( 4u, FPDFAttachment_GetFile(attachment, content_buf.data(), length_bytes)); EXPECT_EQ(std::string("test"), std::string(content_buf.data(), 4));
+ show +
42
43
44
45
46
47
48
49
50
51
// Check that a non-existent key does not exist. EXPECT_FALSE(FPDFAttachment_HasKey(attachment, "none")); // Check that the string value of a non-string dictionary entry is empty. static constexpr char kSizeKey[] = "Size"; EXPECT_EQ(FPDF_OBJECT_NUMBER, FPDFAttachment_GetValueType(attachment, kSizeKey)); EXPECT_EQ(2u, FPDFAttachment_GetStringValue(attachment, kSizeKey, nullptr, 0));

[CVE-2023-40093_1.diff] fpdf_editimg.cpp #6
-FPDFImageObj_GetMatrix(FPDF_PAGEOBJECT image_object, - double* a, - double* b, - double* c, - double* d, - double* e, - double* f) { - CPDF_ImageObject* pImgObj = CPDFImageObjectFromFPDFPageObject(image_object); - if (!pImgObj || !a || !b || !c || !d || !e || !f) - return false; - - const CFX_Matrix& matrix = pImgObj->matrix(); - *a = matrix.a; - *b = matrix.b; - *c = matrix.c; - *d = matrix.d; - *e = matrix.e; - *f = matrix.f; - return true; -} - -FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editimg.cpp
112
113
114
115
116
117
118
119
120
121
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFImageObj_LoadJpegFileInline(FPDF_PAGE* pages, int count, FPDF_PAGEOBJECT image_object, FPDF_FILEACCESS* file_access) { return LoadJpegHelper(pages, count, image_object, file_access, true); } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
+ show +
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
FPDFImageObj_GetMatrix(FPDF_PAGEOBJECT image_object, double* a, double* b, double* c, double* d, double* e, double* f) { CPDF_ImageObject* pImgObj = CPDFImageObjectFromFPDFPageObject(image_object); if (!pImgObj || !a || !b || !c || !d || !e || !f) return false; const CFX_Matrix& matrix = pImgObj->matrix(); *a = matrix.a; *b = matrix.b; *c = matrix.c; *d = matrix.d; *e = matrix.e; *f = matrix.f; return true; } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
+ show +
144
145
146
147
148
149
150
151
152
153
FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object, double a, double b, double c, double d, double e, double f) { CPDF_ImageObject* pImgObj = CPDFImageObjectFromFPDFPageObject(image_object); if (!pImgObj) return false;

[CVE-2023-40093_1.diff] fpdf_editimg.cpp #7
- pImgObj->set_matrix(CFX_Matrix(static_cast<float>(a), static_cast<float>(b), - static_cast<float>(c), static_cast<float>(d), - static_cast<float>(e), static_cast<float>(f))); - pImgObj->CalcBoundingBox(); + pImgObj->SetImageMatrix(CFX_Matrix( + static_cast<float>(a), static_cast<float>(b), static_cast<float>(c), + static_cast<float>(d), static_cast<float>(e), static_cast<float>(f)));
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editimg.cpp
145
146
147
148
149
150
151
152
153
154
double a, double b, double c, double d, double e, double f) { CPDF_ImageObject* pImgObj = CPDFImageObjectFromFPDFPageObject(image_object); if (!pImgObj) return false;
+ show +
155
156
157
158
pImgObj->set_matrix(CFX_Matrix(static_cast<float>(a), static_cast<float>(b), static_cast<float>(c), static_cast<float>(d), static_cast<float>(e), static_cast<float>(f))); pImgObj->CalcBoundingBox();
+ show +
159
160
161
162
163
164
165
166
167
168
pImgObj->SetDirty(true); return true; } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFImageObj_SetBitmap(FPDF_PAGE* pages, int count, FPDF_PAGEOBJECT image_object, FPDF_BITMAP bitmap) { CPDF_ImageObject* pImgObj = CPDFImageObjectFromFPDFPageObject(image_object);

[CVE-2023-40093_1.diff] fpdf_editimg.cpp #8
- RetainPtr<CFX_DIBitmap> pBitmap; - if (pSource->GetBPP() == 1) - pBitmap = pSource->CloneConvert(FXDIB_8bppRgb); - else - pBitmap = pSource->Clone(nullptr); + RetainPtr<CFX_DIBitmap> pBitmap = + pSource->GetBPP() == 1 ? pSource->ConvertTo(FXDIB_Format::k8bppRgb) + : pSource->Realize(); +FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV +FPDFImageObj_GetRenderedBitmap(FPDF_DOCUMENT document, + FPDF_PAGE page, + FPDF_PAGEOBJECT image_object) { + CPDF_Document* doc = CPDFDocumentFromFPDFDocument(document); + if (!doc) + return nullptr; + + CPDF_Page* optional_page = CPDFPageFromFPDFPage(page); + if (optional_page && optional_page->GetDocument() != doc) + return nullptr; + + CPDF_ImageObject* image = CPDFImageObjectFromFPDFPageObject(image_object); + if (!image) + return nullptr; + + // Create |result_bitmap|. + const CFX_Matrix& image_matrix = image->matrix(); + int output_width = image_matrix.a; + int output_height = image_matrix.d; + auto result_bitmap = pdfium::MakeRetain<CFX_DIBitmap>(); + if (!result_bitmap->Create(output_width, output_height, FXDIB_Format::kArgb)) + return nullptr; + + // Set up all the rendering code. + RetainPtr<CPDF_Dictionary> page_resources = + optional_page ? optional_page->GetMutablePageResources() : nullptr; + CPDF_RenderContext context(doc, std::move(page_resources), + /*pPageCache=*/nullptr); + CFX_DefaultRenderDevice device; + device.Attach(result_bitmap); + CPDF_RenderStatus status(&context, &device); + CPDF_ImageRenderer renderer(&status); + + // Need to first flip the image, as expected by |renderer|. + CFX_Matrix render_matrix(1, 0, 0, -1, 0, output_height); + + // Then take |image_matrix|'s offset into account. + render_matrix.Translate(-image_matrix.e, image_matrix.f); + + // Do the actual rendering. + bool should_continue = renderer.Start(image, render_matrix, + /*bStdCS=*/false, BlendMode::kNormal); + while (should_continue) + should_continue = renderer.Continue(/*pPause=*/nullptr); + + if (!renderer.GetResult()) + return nullptr; + +#if defined(_SKIA_SUPPORT_) + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) + result_bitmap->UnPreMultiply(); +#endif + + // Caller takes ownership. + return FPDFBitmapFromCFXDIBitmap(result_bitmap.Leak()); +} +
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editimg.cpp
194
195
196
197
198
199
200
201
202
203
return nullptr; RetainPtr<CPDF_Image> pImg = pImgObj->GetImage(); if (!pImg) return nullptr; RetainPtr<CFX_DIBBase> pSource = pImg->LoadDIBBase(); if (!pSource) return nullptr;
+ show +
204
205
206
207
208
209
210
211
212
RetainPtr<CFX_DIBitmap> pBitmap; // If the source image has a representation of 1 bit per pixel, then convert // it to a grayscale bitmap having 1 byte per pixel, since bitmaps have no // concept of bits. Otherwise, convert the source image to a bitmap directly, // retaining its color representation. if (pSource->GetBPP() == 1) pBitmap = pSource->CloneConvert(FXDIB_8bppRgb); else pBitmap = pSource->Clone(nullptr);
+ show +
213
214
215
216
217
218
219
220
221
222
return FPDFBitmapFromCFXDIBitmap(pBitmap.Leak()); } FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFImageObj_GetImageDataDecoded(FPDF_PAGEOBJECT image_object, void* buffer, unsigned long buflen) { CPDF_ImageObject* pImgObj = CPDFImageObjectFromFPDFPageObject(image_object); if (!pImgObj)

[CVE-2023-40093_1.diff] fpdf_editimg.cpp #12
- CPDF_Object* pFilter = - pObj->AsImage()->GetImage()->GetDict()->GetDirectObjectFor("Filter"); - ByteString bsFilter; - if (pFilter->IsName()) - bsFilter = pFilter->AsName()->GetString(); - else - bsFilter = pFilter->AsArray()->GetStringAt(index); + RetainPtr<const CPDF_Dictionary> pDict = + pObj->AsImage()->GetImage()->GetDict(); + RetainPtr<const CPDF_Object> pFilter = pDict->GetDirectObjectFor("Filter"); + ByteString bsFilter = pFilter->IsName() + ? pFilter->AsName()->GetString() + : pFilter->AsArray()->GetByteStringAt(index); - unsigned long len = bsFilter.GetLength() + 1; - if (buffer && len <= buflen) - memcpy(buffer, bsFilter.c_str(), len); - return len; + return NulTerminateMaybeCopyAndReturnLength(bsFilter, buffer, buflen);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editimg.cpp
277
278
279
280
281
282
283
284
285
286
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFImageObj_GetImageFilter(FPDF_PAGEOBJECT image_object, int index, void* buffer, unsigned long buflen) { if (index < 0 || index >= FPDFImageObj_GetImageFilterCount(image_object)) return 0; CPDF_PageObject* pObj = CPDFPageObjectFromFPDFPageObject(image_object);
+ show +
287
288
289
290
291
292
293
294
295
296
297
298
CPDF_Object* pFilter = pObj->AsImage()->GetImage()->GetDict()->GetDirectObjectFor("Filter"); ByteString bsFilter; if (pFilter->IsName()) bsFilter = pFilter->AsName()->GetString(); else bsFilter = pFilter->AsArray()->GetStringAt(index); unsigned long len = bsFilter.GetLength() + 1; if (buffer && len <= buflen) memcpy(buffer, bsFilter.c_str(), len); return len;
+ show +
299
300
301
302
303
304
305
306
307
308
} FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFImageObj_GetImageMetadata(FPDF_PAGEOBJECT image_object, FPDF_PAGE page, FPDF_IMAGEOBJ_METADATA* metadata) { CPDF_ImageObject* pImgObj = CPDFImageObjectFromFPDFPageObject(image_object); if (!pImgObj || !metadata) return false;

[CVE-2023-40093_1.diff] fpdf_text.cpp #3
+#include "core/fxcrt/stl_util.h" +#include "third_party/base/check_op.h" -#include "third_party/base/ptr_util.h" -#include "third_party/base/stl_util.h" - -#if defined(OS_WIN) -#include <tchar.h> -#endif
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_text.cpp
14
15
16
17
18
19
20
21
22
23
#include "core/fpdfapi/font/cpdf_cidfont.h" #include "core/fpdfapi/font/cpdf_font.h" #include "core/fpdfapi/page/cpdf_page.h" #include "core/fpdfapi/page/cpdf_textobject.h" #include "core/fpdfdoc/cpdf_viewerpreferences.h" #include "core/fpdftext/cpdf_linkextract.h" #include "core/fpdftext/cpdf_textpage.h" #include "core/fpdftext/cpdf_textpagefind.h" #include "fpdfsdk/cpdfsdk_helpers.h" #include "third_party/base/numerics/safe_conversions.h"
+ show +
24
25
26
27
28
29
#include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h" #if defined(OS_WIN) #include <tchar.h> #endif
+ show +
30
31
32
33
34
35
36
37
38
39
namespace { constexpr size_t kBytesPerCharacter = sizeof(unsigned short); CPDF_TextPage* GetTextPageForValidIndex(FPDF_TEXTPAGE text_page, int index) { if (!text_page || index < 0) return nullptr; CPDF_TextPage* textpage = CPDFTextPageFromFPDFTextPage(text_page);

[CVE-2023-40093_1.diff] fpdf_text.cpp #9
- const CPDF_TextPage::CharInfo& charinfo = textpage->GetCharInfo(index); - float font_size = textpage->GetCharFontSize(index); - - if (charinfo.m_pTextObj && !IsFloatZero(font_size)) { - bool is_vert_writing = charinfo.m_pTextObj->GetFont()->IsVertWriting(); - if (is_vert_writing && charinfo.m_pTextObj->GetFont()->IsCIDFont()) { - CPDF_CIDFont* pCIDFont = charinfo.m_pTextObj->GetFont()->AsCIDFont(); - uint16_t cid = pCIDFont->CIDFromCharCode(charinfo.m_CharCode); - - short vx; - short vy; - pCIDFont->GetVertOrigin(cid, vx, vy); - double offsetx = (vx - 500) * font_size / 1000.0; - double offsety = vy * font_size / 1000.0; - short vert_width = pCIDFont->GetVertWidth(cid); - double height = vert_width * font_size / 1000.0; - - rect->left = charinfo.m_Origin.x + offsetx; - rect->right = rect->left + font_size; - rect->bottom = charinfo.m_Origin.y + offsety; - rect->top = rect->bottom + height; - return true; - } - - int ascent = charinfo.m_pTextObj->GetFont()->GetTypeAscent(); - int descent = charinfo.m_pTextObj->GetFont()->GetTypeDescent(); - if (ascent != descent) { - float width = charinfo.m_pTextObj->GetCharWidth(charinfo.m_CharCode); - float font_scale = font_size / (ascent - descent); - - rect->left = charinfo.m_Origin.x; - rect->right = charinfo.m_Origin.x + (is_vert_writing ? -width : width); - rect->bottom = charinfo.m_Origin.y + descent * font_scale; - rect->top = charinfo.m_Origin.y + ascent * font_scale; - return true; - } - } - - // Fallback to the tight bounds in empty text scenarios, or bad font metrics - *rect = FSRectFFromCFXFloatRect(charinfo.m_CharBox); + *rect = FSRectFFromCFXFloatRect(textpage->GetCharLooseBounds(index));
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_text.cpp
233
234
235
236
237
238
239
240
241
242
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetLooseCharBox(FPDF_TEXTPAGE text_page, int index, FS_RECTF* rect) { if (!rect) return false; CPDF_TextPage* textpage = GetTextPageForValidIndex(text_page, index); if (!textpage) return false;
+ show +
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
const CPDF_TextPage::CharInfo& charinfo = textpage->GetCharInfo(index); float font_size = textpage->GetCharFontSize(index); if (charinfo.m_pTextObj && !IsFloatZero(font_size)) { bool is_vert_writing = charinfo.m_pTextObj->GetFont()->IsVertWriting(); if (is_vert_writing && charinfo.m_pTextObj->GetFont()->IsCIDFont()) { CPDF_CIDFont* pCIDFont = charinfo.m_pTextObj->GetFont()->AsCIDFont(); uint16_t cid = pCIDFont->CIDFromCharCode(charinfo.m_CharCode); short vx; short vy; pCIDFont->GetVertOrigin(cid, vx, vy); double offsetx = (vx - 500) * font_size / 1000.0; double offsety = vy * font_size / 1000.0; short vert_width = pCIDFont->GetVertWidth(cid); double height = vert_width * font_size / 1000.0; rect->left = charinfo.m_Origin.x + offsetx; rect->right = rect->left + font_size; rect->bottom = charinfo.m_Origin.y + offsety; rect->top = rect->bottom + height; return true; } int ascent = charinfo.m_pTextObj->GetFont()->GetTypeAscent(); int descent = charinfo.m_pTextObj->GetFont()->GetTypeDescent(); if (ascent != descent) { float width = charinfo.m_pTextObj->GetCharWidth(charinfo.m_CharCode); float font_scale = font_size / (ascent - descent); rect->left = charinfo.m_Origin.x; rect->right = charinfo.m_Origin.x + (is_vert_writing ? -width : width); rect->bottom = charinfo.m_Origin.y + descent * font_scale; rect->top = charinfo.m_Origin.y + ascent * font_scale; return true; } } // Fallback to the tight bounds in empty text scenarios, or bad font metrics *rect = FSRectFFromCFXFloatRect(charinfo.m_CharBox);
+ show +
283
284
285
286
287
288
289
290
291
292
return true; } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetMatrix(FPDF_TEXTPAGE text_page, int index, FS_MATRIX* matrix) { if (!matrix) return false; CPDF_TextPage* textpage = GetTextPageForValidIndex(text_page, index);

[CVE-2023-40093_1.diff] fpdf_annot_embeddertest.cpp #3
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_ExtractInkMultiple DISABLED_ExtractInkMultiple -#else -#define MAYBE_ExtractInkMultiple ExtractInkMultiple -#endif -TEST_F(FPDFAnnotEmbedderTest, MAYBE_ExtractInkMultiple) { +TEST_F(FPDFAnnotEmbedderTest, ExtractInkMultiple) {
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_annot_embeddertest.cpp
186
187
188
189
190
191
192
193
194
195
ASSERT_TRUE(FPDFAnnot_GetAttachmentPoints(annot.get(), 0, &quadpoints)); EXPECT_EQ(115.802643f, quadpoints.x1); EXPECT_EQ(718.913940f, quadpoints.y1); EXPECT_EQ(157.211182f, quadpoints.x4); EXPECT_EQ(706.264465f, quadpoints.y4); } UnloadPageNoEvents(page); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
196
197
198
199
200
201
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_ExtractInkMultiple DISABLED_ExtractInkMultiple #else #define MAYBE_ExtractInkMultiple ExtractInkMultiple #endif TEST_F(FPDFAnnotEmbedderTest, MAYBE_ExtractInkMultiple) {
+ show +
202
203
204
205
206
207
208
209
210
211
// Open a file with three annotations and load its first page. ASSERT_TRUE(OpenDocument("annotation_ink_multiple.pdf")); FPDF_PAGE page = LoadPageNoEvents(0); ASSERT_TRUE(page); // Check that there is a total of 3 annotation on its first page. EXPECT_EQ(3, FPDFPage_GetAnnotCount(page)); { // Check that the third annotation is of type "ink".

[CVE-2023-40093_1.diff] fpdf_annot_embeddertest.cpp #5
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_AddAndSaveUnderlineAnnotation \ - DISABLED_AddAndSaveUnderlineAnnotation -#else -#define MAYBE_AddAndSaveUnderlineAnnotation AddAndSaveUnderlineAnnotation -#endif -TEST_F(FPDFAnnotEmbedderTest, MAYBE_AddAndSaveUnderlineAnnotation) { +TEST_F(FPDFAnnotEmbedderTest, AddAndSaveLinkAnnotation) { + ASSERT_TRUE(OpenDocument("hello_world.pdf")); + FPDF_PAGE page = LoadPage(0); + ASSERT_TRUE(page); + { + ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT); + CompareBitmap(bitmap.get(), 200, 200, pdfium::HelloWorldChecksum()); + } + EXPECT_EQ(0, FPDFPage_GetAnnotCount(page)); + + constexpr char kUri[] = "https://pdfium.org/"; + + { + // Add a link annotation to the page and set its URI. + ScopedFPDFAnnotation annot(FPDFPage_CreateAnnot(page, FPDF_ANNOT_LINK)); + ASSERT_TRUE(annot); + EXPECT_EQ(1, FPDFPage_GetAnnotCount(page)); + EXPECT_EQ(FPDF_ANNOT_LINK, FPDFAnnot_GetSubtype(annot.get())); + EXPECT_TRUE(FPDFAnnot_SetURI(annot.get(), kUri)); + VerifyUriActionInLink(document(), FPDFAnnot_GetLink(annot.get()), kUri); + + // Negative tests: + EXPECT_FALSE(FPDFAnnot_SetURI(nullptr, nullptr)); + VerifyUriActionInLink(document(), FPDFAnnot_GetLink(annot.get()), kUri); + EXPECT_FALSE(FPDFAnnot_SetURI(annot.get(), nullptr)); + VerifyUriActionInLink(document(), FPDFAnnot_GetLink(annot.get()), kUri); + EXPECT_FALSE(FPDFAnnot_SetURI(nullptr, kUri)); + VerifyUriActionInLink(document(), FPDFAnnot_GetLink(annot.get()), kUri); + + // Position the link on top of "Hello, world!" without a border. + const FS_RECTF kRect = {19.0f, 48.0f, 85.0f, 60.0f}; + EXPECT_TRUE(FPDFAnnot_SetRect(annot.get(), &kRect)); + EXPECT_TRUE(FPDFAnnot_SetBorder(annot.get(), /*horizontal_radius=*/0.0f, + /*vertical_radius=*/0.0f, + /*border_width=*/0.0f)); + + VerifyUriActionInLink(document(), FPDFLink_GetLinkAtPoint(page, 40.0, 50.0), + kUri); + } + + { + // Add an ink annotation to the page. Trying to add a link to it fails. + ScopedFPDFAnnotation annot(FPDFPage_CreateAnnot(page, FPDF_ANNOT_INK)); + ASSERT_TRUE(annot); + EXPECT_EQ(2, FPDFPage_GetAnnotCount(page)); + EXPECT_EQ(FPDF_ANNOT_INK, FPDFAnnot_GetSubtype(annot.get())); + EXPECT_FALSE(FPDFAnnot_SetURI(annot.get(), kUri)); + } + + // Remove the ink annotation added above for negative testing. + EXPECT_TRUE(FPDFPage_RemoveAnnot(page, 1)); + EXPECT_EQ(1, FPDFPage_GetAnnotCount(page)); + + // Save the document, closing the page. + EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0)); + UnloadPage(page); + + // Reopen the document and make sure it still renders the same. Since the link + // does not have a border, it does not affect the rendering. + ASSERT_TRUE(OpenSavedDocument()); + page = LoadSavedPage(0); + ASSERT_TRUE(page); + VerifySavedRendering(page, 200, 200, pdfium::HelloWorldChecksum()); + EXPECT_EQ(1, FPDFPage_GetAnnotCount(page)); + + { + ScopedFPDFAnnotation annot(FPDFPage_GetAnnot(page, 0)); + ASSERT_TRUE(annot); + EXPECT_EQ(FPDF_ANNOT_LINK, FPDFAnnot_GetSubtype(annot.get())); + VerifyUriActionInLink(document(), FPDFAnnot_GetLink(annot.get()), kUri); + VerifyUriActionInLink(document(), FPDFLink_GetLinkAtPoint(page, 40.0, 50.0), + kUri); + } + + CloseSavedPage(page); + CloseSavedDocument(); +} + +TEST_F(FPDFAnnotEmbedderTest, AddAndSaveUnderlineAnnotation) {
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_annot_embeddertest.cpp
336
337
338
339
340
341
342
343
344
345
std::vector<FPDF_WCHAR> buf = GetFPDFWideStringBuffer(length_bytes); EXPECT_EQ(74u, FPDFAnnot_GetStringValue(annot.get(), pdfium::annotation::kContents, buf.data(), length_bytes)); EXPECT_EQ(kContents, GetPlatformWString(buf.data())); } UnloadPage(page); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
346
347
348
349
350
351
352
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_AddAndSaveUnderlineAnnotation \ DISABLED_AddAndSaveUnderlineAnnotation #else #define MAYBE_AddAndSaveUnderlineAnnotation AddAndSaveUnderlineAnnotation #endif TEST_F(FPDFAnnotEmbedderTest, MAYBE_AddAndSaveUnderlineAnnotation) {
+ show +
353
354
355
356
357
358
359
360
361
362
// Open a file with one annotation and load its first page. ASSERT_TRUE(OpenDocument("annotation_highlight_long_content.pdf")); FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); // Check that there is a total of one annotation on its first page, and verify // its quadpoints. EXPECT_EQ(1, FPDFPage_GetAnnotCount(page)); FS_QUADPOINTSF quadpoints; {

[CVE-2023-40093_1.diff] fpdf_annot_embeddertest.cpp #47
+ EXPECT_FALSE(flags & FPDF_FORMFLAG_REQUIRED); + EXPECT_FALSE(flags & FPDF_FORMFLAG_NOEXPORT); + EXPECT_FALSE(flags & FPDF_FORMFLAG_CHOICE_MULTI_SELECT); + EXPECT_FALSE(flags & FPDF_FORMFLAG_REQUIRED); + EXPECT_FALSE(flags & FPDF_FORMFLAG_NOEXPORT); + EXPECT_FALSE(flags & FPDF_FORMFLAG_CHOICE_MULTI_SELECT); + EXPECT_FALSE(flags & FPDF_FORMFLAG_REQUIRED); + EXPECT_FALSE(flags & FPDF_FORMFLAG_NOEXPORT); + EXPECT_FALSE(flags & FPDF_FORMFLAG_CHOICE_MULTI_SELECT); -// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_BUG_1206 DISABLED_BUG_1206 -#else -#define MAYBE_BUG_1206 BUG_1206 -#endif -TEST_F(FPDFAnnotEmbedderTest, MAYBE_BUG_1206) { - static constexpr size_t kExpectedSize = 1609; - static const char kExpectedBitmap[] = "0d9fc05c6762fd788bd23fd87a4967bc"; +TEST_F(FPDFAnnotEmbedderTest, BUG_1206) { + const char* expected_bitmap = []() { + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) + return "a1ea1ceebb26922fae576cb79ce63af0"; + return "0d9fc05c6762fd788bd23fd87a4967bc"; + }(); + static constexpr size_t kExpectedSize = 1590;
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_annot_embeddertest.cpp
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
int flags = FPDFAnnot_GetFormFieldFlags(form_handle(), annot.get()); EXPECT_TRUE(flags & FPDF_FORMFLAG_READONLY); EXPECT_TRUE(flags & FPDF_FORMFLAG_CHOICE_COMBO); EXPECT_FALSE(flags & FPDF_FORMFLAG_CHOICE_EDIT); } UnloadPage(page); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
1670
1671
1672
1673
1674
1675
1676
1677
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_BUG_1206 DISABLED_BUG_1206 #else #define MAYBE_BUG_1206 BUG_1206 #endif TEST_F(FPDFAnnotEmbedderTest, MAYBE_BUG_1206) { static constexpr size_t kExpectedSize = 1609; static const char kExpectedBitmap[] = "0d9fc05c6762fd788bd23fd87a4967bc";
+ show +
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
ASSERT_TRUE(OpenDocument("bug_1206.pdf")); FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); ASSERT_TRUE(FPDF_SaveAsCopy(document(), this, 0)); EXPECT_EQ(kExpectedSize, GetString().size()); ClearString();

[CVE-2023-40093_1.diff] cpdfsdk_widget.h #4
- bool IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode); - void DrawAppearance(CFX_RenderDevice* pDevice, - const CFX_Matrix& mtUser2Device, - CPDF_Annot::AppearanceMode mode, - const CPDF_RenderOptions* pOptions) override; - + bool IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode) const; + bool IsPushHighlighted() const;
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_widget.h
114
115
116
117
118
119
120
121
122
123
void DrawShadow(CFX_RenderDevice* pDevice, CPDFSDK_PageView* pPageView); void SetAppModified(); void ClearAppModified(); bool IsAppModified() const; uint32_t GetAppearanceAge() const { return m_nAppearanceAge; } uint32_t GetValueAge() const { return m_nValueAge; }
+ show +
124
125
126
127
128
bool IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode); void DrawAppearance(CFX_RenderDevice* pDevice, const CFX_Matrix& mtUser2Device, CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions) override;
+ show +
129
130
131
132
133
134
135
136
137
138
CFX_Matrix GetMatrix() const; CFX_FloatRect GetClientRect() const; CFX_FloatRect GetRotatedRect() const; CFX_Color GetTextPWLColor() const; CFX_Color GetBorderPWLColor() const; CFX_Color GetFillPWLColor() const; private: #ifdef PDF_ENABLE_XFA

[CVE-2023-40093_1.diff] cpdfsdk_helpers.h #3
+#include <vector> + +#include "core/fxcrt/retain_ptr.h" +#include "core/fxge/cfx_path.h" -#if defined(OS_WIN) -#include <math.h> -#include <tchar.h> -#endif -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_helpers.h
12
13
14
15
16
17
18
19
20
21
#include "core/fpdfapi/parser/cpdf_parser.h" #include "core/fxge/dib/cfx_dibitmap.h" #include "public/fpdf_doc.h" #include "public/fpdf_ext.h" #include "public/fpdfview.h" #ifdef PDF_ENABLE_XFA #include "core/fxcrt/fx_stream.h" #endif // PDF_ENABLE_XFA
+ show +
22
23
24
25
#if defined(OS_WIN) #include <math.h> #include <tchar.h> #endif
+ show +
26
27
28
29
30
31
32
33
34
35
class CPDF_Annot; class CPDF_AnnotContext; class CPDF_ClipPath; class CPDF_ContentMarkItem; class CPDF_Object; class CPDF_Font; class CPDF_LinkExtract; class CPDF_PageObject; class CPDF_Stream;

[CVE-2023-40093_1.diff] cpdfsdk_baannot.cpp #3
- CPDF_Annot::AppearanceMode mode, - const CPDF_RenderOptions* pOptions) { - m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, mtUser2Device, - mode, pOptions); + CPDF_Annot::AppearanceMode mode) { + m_pAnnot->DrawAppearance(GetPageView()->GetPDFPage(), pDevice, mtUser2Device, + mode);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_baannot.cpp
61
62
63
64
65
66
67
68
69
70
CFX_FloatRect CPDFSDK_BAAnnot::GetRect() const { return m_pAnnot->GetRect(); } CPDF_Annot::Subtype CPDFSDK_BAAnnot::GetAnnotSubtype() const { return m_pAnnot->GetSubtype(); } void CPDFSDK_BAAnnot::DrawAppearance(CFX_RenderDevice* pDevice, const CFX_Matrix& mtUser2Device,
+ show +
71
72
73
74
CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions) { m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, mtUser2Device, mode, pOptions);
+ show +
75
76
77
78
79
80
81
82
83
84
} bool CPDFSDK_BAAnnot::IsAppearanceValid() { return !!GetAnnotDict()->GetDictFor(pdfium::annotation::kAP); } void CPDFSDK_BAAnnot::SetAnnotName(const WideString& sName) { CPDF_Dictionary* pDict = GetAnnotDict(); if (sName.IsEmpty()) pDict->RemoveFor(pdfium::annotation::kNM);

[CVE-2023-40093_1.diff] fpdf_view.cpp #22
- CPDFSDK_PageView* pPageView = - static_cast<CPDFSDK_PageView*>(pPage->AsPDFPage()->GetView()); - if (!pPageView || pPageView->IsBeingDestroyed()) - return; - - if (pPageView->IsLocked()) { - pPageView->TakePageOwnership(); - return; - } - - // This will delete the |pPageView| object. We must cleanup the PageView - // first because it will attempt to reset the View on the |pPage| during - // destruction. - pPageView->GetFormFillEnv()->RemovePageView(pPage.Get()); + // This will delete the PageView object corresponding to |pPage|. We must + // cleanup the PageView before releasing the reference on |pPage| as it will + // attempt to reset the PageView during destruction. + pPage->AsPDFPage()->ClearView();
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_view.cpp
671
672
673
674
675
676
677
678
679
680
if (!page) return; // Take it back across the API and hold for duration of this function. RetainPtr<IPDF_Page> pPage; pPage.Unleak(IPDFPageFromFPDFPage(page)); if (pPage->AsXFAPage()) return;
+ show +
681
682
683
684
685
686
687
688
689
690
691
692
693
694
CPDFSDK_PageView* pPageView = static_cast<CPDFSDK_PageView*>(pPage->AsPDFPage()->GetView()); if (!pPageView || pPageView->IsBeingDestroyed()) return; if (pPageView->IsLocked()) { pPageView->TakePageOwnership(); return; } // This will delete the |pPageView| object. We must cleanup the PageView // first because it will attempt to reset the View on the |pPage| during // destruction. pPageView->GetFormFillEnv()->RemovePageView(pPage.Get());
+ show +
695
696
697
698
699
700
701
702
703
704
} FPDF_EXPORT void FPDF_CALLCONV FPDF_CloseDocument(FPDF_DOCUMENT document) { // Take it back across the API and throw it away, std::unique_ptr<CPDF_Document>(CPDFDocumentFromFPDFDocument(document)); } FPDF_EXPORT unsigned long FPDF_CALLCONV FPDF_GetLastError() { return FXSYS_GetLastError(); }

[CVE-2023-40093_1.diff] fpdf_view.cpp #34
- CPDF_NameTree nameTree(pDoc, "Dests"); - pdfium::base::CheckedNumeric<FPDF_DWORD> count = nameTree.GetCount(); - const CPDF_Dictionary* pDest = pRoot->GetDictFor("Dests"); - if (pDest) - count += pDest->size(); - - if (!count.IsValid()) - return 0; - - return count.ValueOrDie(); + auto name_tree = CPDF_NameTree::Create(pDoc, "Dests"); + FX_SAFE_UINT32 count = name_tree ? name_tree->GetCount() : 0; + RetainPtr<const CPDF_Dictionary> pOldStyleDests = pRoot->GetDictFor("Dests"); + if (pOldStyleDests) + count += pOldStyleDests->size(); + return count.ValueOrDefault(0);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_view.cpp
988
989
990
991
992
993
994
995
996
997
FPDF_EXPORT FPDF_DWORD FPDF_CALLCONV FPDF_CountNamedDests(FPDF_DOCUMENT document) { CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); if (!pDoc) return 0; const CPDF_Dictionary* pRoot = pDoc->GetRoot(); if (!pRoot) return 0;
+ show +
998
999
1000
1001
1002
1003
1004
1005
1006
1007
CPDF_NameTree nameTree(pDoc, "Dests"); pdfium::base::CheckedNumeric<FPDF_DWORD> count = nameTree.GetCount(); const CPDF_Dictionary* pDest = pRoot->GetDictFor("Dests"); if (pDest) count += pDest->size(); if (!count.IsValid()) return 0; return count.ValueOrDie();
+ show +
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
} FPDF_EXPORT FPDF_DEST FPDF_CALLCONV FPDF_GetNamedDestByName(FPDF_DOCUMENT document, FPDF_BYTESTRING name) { if (!name || name[0] == 0) return nullptr; CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); if (!pDoc) return nullptr;

[CVE-2023-40093_1.diff] fpdf_dataavail_embeddertest.cpp #4
- avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); - ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); - document_ = FPDFAvail_GetDocument(avail_, nullptr); - ASSERT_TRUE(document_); + CreateAvail(loader.file_avail(), loader.file_access()); + ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail(), loader.hints())); + SetDocumentFromAvail(); + ASSERT_TRUE(document());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
168
169
170
171
172
173
174
175
176
177
TEST_F(FPDFDataAvailEmbedderTest, TrailerAsHexstring) { // Document must load without crashing but is too malformed to be available. EXPECT_FALSE(OpenDocument("trailer_as_hexstring.pdf")); MockDownloadHints hints; EXPECT_FALSE(FPDFAvail_IsDocAvail(avail_, &hints)); } TEST_F(FPDFDataAvailEmbedderTest, LoadUsingHintTables) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
178
179
180
181
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
182
183
184
185
186
187
188
189
190
191
ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsPageAvail(avail_, 1, loader.hints())); // No new data available, to prevent load "Pages" node. loader.set_is_new_data_available(false); ScopedFPDFPage page(FPDF_LoadPage(document(), 1)); EXPECT_TRUE(page); } TEST_F(FPDFDataAvailEmbedderTest, CheckFormAvailIfLinearized) { TestAsyncLoader loader("feature_linearized_loading.pdf");
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
182
183
184
185
186
187
188
189
190
191
ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsPageAvail(avail_, 1, loader.hints())); // No new data available, to prevent load "Pages" node. loader.set_is_new_data_available(false); ScopedFPDFPage page(FPDF_LoadPage(document(), 1)); EXPECT_TRUE(page); } TEST_F(FPDFDataAvailEmbedderTest, CheckFormAvailIfLinearized) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
192
193
194
195
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
196
197
198
199
200
201
202
203
204
205
// Prevent access to non-requested data to coerce the parser to send new // request for non available (non-requested before) data. loader.set_is_new_data_available(false); loader.ClearRequestedSegments(); int status = PDF_FORM_NOTAVAIL; while (status == PDF_FORM_NOTAVAIL) { loader.FlushRequestedData(); status = FPDFAvail_IsFormAvail(avail_, loader.hints());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
203
204
205
206
207
208
209
210
211
212
while (status == PDF_FORM_NOTAVAIL) { loader.FlushRequestedData(); status = FPDFAvail_IsFormAvail(avail_, loader.hints()); } EXPECT_NE(PDF_FORM_ERROR, status); } TEST_F(FPDFDataAvailEmbedderTest, DoNotLoadMainCrossRefForFirstPageIfLinearized) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
213
214
215
216
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
217
218
219
220
221
222
223
224
225
226
const int first_page_num = FPDFAvail_GetFirstPageNum(document_); // The main cross ref table should not be processed. // (It is always at file end) EXPECT_GT(loader.file_access()->m_FileLen, loader.max_already_available_bound()); // Prevent access to non-requested data to coerce the parser to send new // request for non available (non-requested before) data. loader.set_is_new_data_available(false);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
241
242
243
244
245
246
247
248
249
250
loader.max_already_available_bound()); // Prevent loading data, while page loading. loader.set_is_new_data_available(false); ScopedFPDFPage page(FPDF_LoadPage(document(), first_page_num)); EXPECT_TRUE(page); } TEST_F(FPDFDataAvailEmbedderTest, LoadSecondPageIfLinearizedWithHints) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
251
252
253
254
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
255
256
257
258
259
260
261
262
263
264
static constexpr uint32_t kSecondPageNum = 1; // Prevent access to non-requested data to coerce the parser to send new // request for non available (non-requested before) data. loader.set_is_new_data_available(false); loader.ClearRequestedSegments(); int status = PDF_DATA_NOTAVAIL; while (status == PDF_DATA_NOTAVAIL) {

[CVE-2023-40093_1.diff] fpdf_dataavail_embeddertest.cpp #6
- avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); - ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); - document_ = FPDFAvail_GetDocument(avail_, nullptr); - ASSERT_TRUE(document_); - const int first_page_num = FPDFAvail_GetFirstPageNum(document_); + CreateAvail(loader.file_avail(), loader.file_access()); + ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail(), loader.hints())); + SetDocumentFromAvail(); + ASSERT_TRUE(document()); + const int first_page_num = FPDFAvail_GetFirstPageNum(document());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
203
204
205
206
207
208
209
210
211
212
while (status == PDF_FORM_NOTAVAIL) { loader.FlushRequestedData(); status = FPDFAvail_IsFormAvail(avail_, loader.hints()); } EXPECT_NE(PDF_FORM_ERROR, status); } TEST_F(FPDFDataAvailEmbedderTest, DoNotLoadMainCrossRefForFirstPageIfLinearized) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
213
214
215
216
217
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_); const int first_page_num = FPDFAvail_GetFirstPageNum(document_);
+ show +
218
219
220
221
222
223
224
225
226
227
// The main cross ref table should not be processed. // (It is always at file end) EXPECT_GT(loader.file_access()->m_FileLen, loader.max_already_available_bound()); // Prevent access to non-requested data to coerce the parser to send new // request for non available (non-requested before) data. loader.set_is_new_data_available(false); FPDFAvail_IsPageAvail(avail_, first_page_num, loader.hints());

[CVE-2023-40093_1.diff] fpdf_dataavail_embeddertest.cpp #9
- avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); - ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); - document_ = FPDFAvail_GetDocument(avail_, nullptr); - ASSERT_TRUE(document_); + CreateAvail(loader.file_avail(), loader.file_access()); + ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail(), loader.hints())); + SetDocumentFromAvail(); + ASSERT_TRUE(document());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
168
169
170
171
172
173
174
175
176
177
TEST_F(FPDFDataAvailEmbedderTest, TrailerAsHexstring) { // Document must load without crashing but is too malformed to be available. EXPECT_FALSE(OpenDocument("trailer_as_hexstring.pdf")); MockDownloadHints hints; EXPECT_FALSE(FPDFAvail_IsDocAvail(avail_, &hints)); } TEST_F(FPDFDataAvailEmbedderTest, LoadUsingHintTables) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
178
179
180
181
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
182
183
184
185
186
187
188
189
190
191
ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsPageAvail(avail_, 1, loader.hints())); // No new data available, to prevent load "Pages" node. loader.set_is_new_data_available(false); ScopedFPDFPage page(FPDF_LoadPage(document(), 1)); EXPECT_TRUE(page); } TEST_F(FPDFDataAvailEmbedderTest, CheckFormAvailIfLinearized) { TestAsyncLoader loader("feature_linearized_loading.pdf");
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
182
183
184
185
186
187
188
189
190
191
ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsPageAvail(avail_, 1, loader.hints())); // No new data available, to prevent load "Pages" node. loader.set_is_new_data_available(false); ScopedFPDFPage page(FPDF_LoadPage(document(), 1)); EXPECT_TRUE(page); } TEST_F(FPDFDataAvailEmbedderTest, CheckFormAvailIfLinearized) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
192
193
194
195
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
196
197
198
199
200
201
202
203
204
205
// Prevent access to non-requested data to coerce the parser to send new // request for non available (non-requested before) data. loader.set_is_new_data_available(false); loader.ClearRequestedSegments(); int status = PDF_FORM_NOTAVAIL; while (status == PDF_FORM_NOTAVAIL) { loader.FlushRequestedData(); status = FPDFAvail_IsFormAvail(avail_, loader.hints());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
203
204
205
206
207
208
209
210
211
212
while (status == PDF_FORM_NOTAVAIL) { loader.FlushRequestedData(); status = FPDFAvail_IsFormAvail(avail_, loader.hints()); } EXPECT_NE(PDF_FORM_ERROR, status); } TEST_F(FPDFDataAvailEmbedderTest, DoNotLoadMainCrossRefForFirstPageIfLinearized) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
213
214
215
216
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
217
218
219
220
221
222
223
224
225
226
const int first_page_num = FPDFAvail_GetFirstPageNum(document_); // The main cross ref table should not be processed. // (It is always at file end) EXPECT_GT(loader.file_access()->m_FileLen, loader.max_already_available_bound()); // Prevent access to non-requested data to coerce the parser to send new // request for non available (non-requested before) data. loader.set_is_new_data_available(false);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_dataavail_embeddertest.cpp
241
242
243
244
245
246
247
248
249
250
loader.max_already_available_bound()); // Prevent loading data, while page loading. loader.set_is_new_data_available(false); ScopedFPDFPage page(FPDF_LoadPage(document(), first_page_num)); EXPECT_TRUE(page); } TEST_F(FPDFDataAvailEmbedderTest, LoadSecondPageIfLinearizedWithHints) { TestAsyncLoader loader("feature_linearized_loading.pdf");
+ show +
251
252
253
254
avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); document_ = FPDFAvail_GetDocument(avail_, nullptr); ASSERT_TRUE(document_);
+ show +
255
256
257
258
259
260
261
262
263
264
static constexpr uint32_t kSecondPageNum = 1; // Prevent access to non-requested data to coerce the parser to send new // request for non available (non-requested before) data. loader.set_is_new_data_available(false); loader.ClearRequestedSegments(); int status = PDF_DATA_NOTAVAIL; while (status == PDF_DATA_NOTAVAIL) {

[CVE-2023-40093_1.diff] fpdf_save.cpp #4
-#if defined(OS_ANDROID) -#include <time.h> -#else -#include <ctime> -#endif -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_save.cpp
24
25
26
27
28
29
30
31
32
33
#include "public/fpdf_edit.h" #include "third_party/base/optional.h" #ifdef PDF_ENABLE_XFA #include "core/fpdfapi/parser/cpdf_stream.h" #include "core/fxcrt/cfx_memorystream.h" #include "fpdfsdk/fpdfxfa/cpdfxfa_context.h" #include "public/fpdf_formfill.h" #endif
+ show +
34
35
36
37
38
#if defined(OS_ANDROID) #include <time.h> #else #include <ctime> #endif
+ show +
39
40
41
42
43
44
45
46
47
48
namespace { #ifdef PDF_ENABLE_XFA bool SaveXFADocumentData(CPDFXFA_Context* pContext, std::vector<RetainPtr<IFX_SeekableStream>>* fileList) { if (!pContext) return false; if (!pContext->ContainsExtensionForm())

[CVE-2023-40093_1.diff] cpdfsdk_formfillenvironment.h #7
- bool PopupMenu(IPDF_Page* page, - FPDF_WIDGET hWidget, - int menuFlag, - const CFX_PointF& pt); + bool PopupMenu(IPDF_Page* page, int menuFlag, const CFX_PointF& pt);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/cpdfsdk_formfillenvironment.h
152
153
154
155
156
157
158
159
160
161
double right, double bottom); int GetCurrentPageIndex() const; void SetCurrentPage(int iCurPage); // TODO(dsinclair): This should probably change to PDFium? WideString FFI_GetAppName() const { return WideString(L"Acrobat"); } void GotoURL(const WideString& wsURL); FS_RECTF GetPageViewRect(IPDF_Page* page);
+ show +
162
163
164
165
bool PopupMenu(IPDF_Page* page, FPDF_WIDGET hWidget, int menuFlag, const CFX_PointF& pt);
+ show +
166
167
168
169
170
171
172
173
174
175
void EmailTo(FPDF_FILEHANDLER* fileHandler, FPDF_WIDESTRING pTo, FPDF_WIDESTRING pSubject, FPDF_WIDESTRING pCC, FPDF_WIDESTRING pBcc, FPDF_WIDESTRING pMsg); void UploadTo(FPDF_FILEHANDLER* fileHandler, int fileFlag, FPDF_WIDESTRING uploadTo); FPDF_FILEHANDLER* OpenFile(int fileType,

[CVE-2023-40093_1.diff] fpdf_editpage.cpp #15
- bool result = pPageObj->m_ContentMarks.RemoveMark(pMarkItem); - if (result) - pPageObj->SetDirty(true); + if (!pPageObj->GetContentMarks()->RemoveMark(pMarkItem)) + return false; - return result; + pPageObj->SetDirty(true); + return true;
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editpage.cpp
327
328
329
330
331
332
333
334
335
336
} FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_RemoveMark(FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark) { CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object); CPDF_ContentMarkItem* pMarkItem = CPDFContentMarkItemFromFPDFPageObjectMark(mark); if (!pPageObj || !pMarkItem) return false;
+ show +
337
338
339
340
341
bool result = pPageObj->m_ContentMarks.RemoveMark(pMarkItem); if (result) pPageObj->SetDirty(true); return result;
+ show +
342
343
344
345
346
347
348
349
350
351
} FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_GetName(FPDF_PAGEOBJECTMARK mark, void* buffer, unsigned long buflen, unsigned long* out_buflen) { if (!mark || !out_buflen) return false;

[CVE-2023-40093_1.diff] fpdf_editpage.cpp #36
- constexpr int kLineJoinMiter = - static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinMiter); - constexpr int kLineJoinBevel = - static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinBevel); - if (line_join < kLineJoinMiter || line_join > kLineJoinBevel) + if (line_join < FPDF_LINEJOIN_MITER || line_join > FPDF_LINEJOIN_BEVEL)
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editpage.cpp
797
798
799
800
801
802
803
804
805
806
auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object); return pPageObj ? pPageObj->m_GraphState.GetLineJoin() : -1; } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetLineJoin(FPDF_PAGEOBJECT page_object, int line_join) { auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object); if (!pPageObj) return false;
+ show +
807
808
809
810
811
constexpr int kLineJoinMiter = static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinMiter); constexpr int kLineJoinBevel = static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinBevel); if (line_join < kLineJoinMiter || line_join > kLineJoinBevel)
+ show +
812
813
814
815
816
817
818
819
820
821
return false; pPageObj->m_GraphState.SetLineJoin( static_cast<CFX_GraphStateData::LineJoin>(line_join)); pPageObj->SetDirty(true); return true; } FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetLineCap(FPDF_PAGEOBJECT page_object) {

[CVE-2023-40093_1.diff] fpdf_editpage_embeddertest.cpp #1
-// Copyright 2018 PDFium Authors. All rights reserved. +// Copyright 2018 The PDFium Authors +#include "core/fxge/cfx_defaultrenderdevice.h" +#include "testing/embedder_test_constants.h" -// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_Rotation DISABLED_Rotation -#else -#define MAYBE_Rotation Rotation -#endif -TEST_F(FPDFEditPageEmbedderTest, MAYBE_Rotation) { - const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe"; - const char kRotatedMD5[] = "d599429574ff0dcad3bc898ea8b874ca"; +TEST_F(FPDFEditPageEmbedderTest, Rotation) { + const char* rotated_checksum = []() { + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) + return "eded83f75f3d0332c584c416c571c0df"; + return "d599429574ff0dcad3bc898ea8b874ca"; + }();
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_editpage_embeddertest.cpp
2
3
4
5
6
7
8
9
10
11
// Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "core/fxcrt/fx_system.h" #include "public/fpdf_edit.h" #include "testing/embedder_test.h" class FPDFEditPageEmbedderTest : public EmbedderTest {}; // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
12
13
14
15
16
17
18
19
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_Rotation DISABLED_Rotation #else #define MAYBE_Rotation Rotation #endif TEST_F(FPDFEditPageEmbedderTest, MAYBE_Rotation) { const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe"; const char kRotatedMD5[] = "d599429574ff0dcad3bc898ea8b874ca";
+ show +
20
21
22
23
24
25
26
27
28
29
{ ASSERT_TRUE(OpenDocument("rectangles.pdf")); FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); { // Render the page as is. EXPECT_EQ(0, FPDFPage_GetRotation(page)); const int page_width = static_cast<int>(FPDF_GetPageWidth(page));

[CVE-2023-40093_1.diff] fpdf_transformpage_embeddertest.cpp #2
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_SetCropBox DISABLED_SetCropBox -#else -#define MAYBE_SetCropBox SetCropBox -#endif -TEST_F(FPDFTransformEmbedderTest, MAYBE_SetCropBox) { - const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe"; - const char kCroppedMD5[] = "9937883715d5144c079fb8f7e3d4f395"; - +TEST_F(FPDFTransformEmbedderTest, SetCropBox) { + const char* cropped_checksum = []() { + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) + return "4b9d2d2246be61c583f454245fe3172f"; + return "9937883715d5144c079fb8f7e3d4f395"; + }();
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_transformpage_embeddertest.cpp
188
189
190
191
192
193
194
195
196
197
&artbox.right, &artbox.top)); EXPECT_EQ(-1.0f, artbox.left); EXPECT_EQ(-1.0f, artbox.bottom); EXPECT_EQ(3.0f, artbox.right); EXPECT_EQ(0.0f, artbox.top); UnloadPage(page); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
198
199
200
201
202
203
204
205
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_SetCropBox DISABLED_SetCropBox #else #define MAYBE_SetCropBox SetCropBox #endif TEST_F(FPDFTransformEmbedderTest, MAYBE_SetCropBox) { const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe"; const char kCroppedMD5[] = "9937883715d5144c079fb8f7e3d4f395";
+ show +
206
207
208
209
210
211
212
213
214
215
{ ASSERT_TRUE(OpenDocument("rectangles.pdf")); FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); { // Render the page as is. FS_RECTF cropbox; EXPECT_FALSE(FPDFPage_GetCropBox(page, &cropbox.left, &cropbox.bottom,

[CVE-2023-40093_1.diff] fpdf_transformpage_embeddertest.cpp #9
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_TransFormWithClipAndSave DISABLED_TransFormWithClipAndSave -#else -#define MAYBE_TransFormWithClipAndSave TransFormWithClipAndSave -#endif -TEST_F(FPDFTransformEmbedderTest, MAYBE_TransFormWithClipAndSave) { - const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe"; - const char kShrunkMD5[] = "f4136cc9209207ab60eb8381a3df2e69"; - +TEST_F(FPDFTransformEmbedderTest, TransFormWithClipAndSave) {
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdf_transformpage_embeddertest.cpp
406
407
408
409
410
411
412
413
414
415
ASSERT_TRUE(page); EXPECT_TRUE(FPDFPage_TransFormWithClip(page, &half_matrix, nullptr)); EXPECT_TRUE(FPDFPage_TransFormWithClip(page, nullptr, &clip_rect)); EXPECT_TRUE(FPDFPage_TransFormWithClip(page, &half_matrix, &clip_rect)); UnloadPage(page); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
416
417
418
419
420
421
422
423
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_TransFormWithClipAndSave DISABLED_TransFormWithClipAndSave #else #define MAYBE_TransFormWithClipAndSave TransFormWithClipAndSave #endif TEST_F(FPDFTransformEmbedderTest, MAYBE_TransFormWithClipAndSave) { const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe"; const char kShrunkMD5[] = "f4136cc9209207ab60eb8381a3df2e69";
+ show +
424
425
426
427
428
429
430
431
432
433
{ ASSERT_TRUE(OpenDocument("rectangles.pdf")); FPDF_PAGE page = LoadPage(0); ASSERT_TRUE(page); { // Render the page as is. const int page_width = static_cast<int>(FPDF_GetPageWidth(page)); const int page_height = static_cast<int>(FPDF_GetPageHeight(page));

[CVE-2023-40093_1.diff] cpdfxfa_docenvironment.cpp #17
- dwOptions & XFA_PRINTOPT_ShowDialog, nStartPage, nEndPage, - dwOptions & XFA_PRINTOPT_CanCancel, dwOptions & XFA_PRINTOPT_ShrinkPage, - dwOptions & XFA_PRINTOPT_AsImage, dwOptions & XFA_PRINTOPT_ReverseOrder, - dwOptions & XFA_PRINTOPT_PrintAnnot); + !!(dwOptions & XFA_PrintOpt::kShowDialog), nStartPage, nEndPage, + !!(dwOptions & XFA_PrintOpt::kCanCancel), + !!(dwOptions & XFA_PrintOpt::kShrinkPage), + !!(dwOptions & XFA_PrintOpt::kAsImage), + !!(dwOptions & XFA_PrintOpt::kReverseOrder), + !!(dwOptions & XFA_PrintOpt::kPrintAnnot)); -FX_ARGB CPDFXFA_DocEnvironment::GetHighlightColor(CXFA_FFDoc* hDoc) { +FX_ARGB CPDFXFA_DocEnvironment::GetHighlightColor( + const CXFA_FFDoc* hDoc) const {
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
571
572
573
574
575
576
577
578
579
580
CPDFSDK_FormFillEnvironment* pFormFillEnv = m_pContext->GetFormFillEnv(); if (!pFormFillEnv || !pFormFillEnv->GetFormFillInfo() || !pFormFillEnv->GetFormFillInfo()->m_pJsPlatform || !pFormFillEnv->GetFormFillInfo()->m_pJsPlatform->Doc_print) { return; } pFormFillEnv->GetFormFillInfo()->m_pJsPlatform->Doc_print( pFormFillEnv->GetFormFillInfo()->m_pJsPlatform,
+ show +
581
582
583
584
585
586
587
dwOptions & XFA_PRINTOPT_ShowDialog, nStartPage, nEndPage, dwOptions & XFA_PRINTOPT_CanCancel, dwOptions & XFA_PRINTOPT_ShrinkPage, dwOptions & XFA_PRINTOPT_AsImage, dwOptions & XFA_PRINTOPT_ReverseOrder, dwOptions & XFA_PRINTOPT_PrintAnnot); } FX_ARGB CPDFXFA_DocEnvironment::GetHighlightColor(CXFA_FFDoc* hDoc) {
+ show +
588
589
590
591
592
593
594
595
596
597
if (hDoc != m_pContext->GetXFADoc() || !m_pContext->GetFormFillEnv()) return 0; CPDFSDK_InteractiveForm* pForm = m_pContext->GetFormFillEnv()->GetInteractiveForm(); return AlphaAndColorRefToArgb(pForm->GetHighlightAlpha(), pForm->GetHighlightColor(FormFieldType::kXFA)); } IJS_Runtime* CPDFXFA_DocEnvironment::GetIJSRuntime(CXFA_FFDoc* hDoc) const {

[CVE-2023-40093_1.diff] cpdfxfa_docenvironment.cpp #22
-bool CPDFXFA_DocEnvironment::NotifySubmit(bool bPrevOrPost) { - if (bPrevOrPost) - return OnBeforeNotifySubmit(); - - OnAfterNotifySubmit(); - return true; -} -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
871
872
873
874
875
876
877
878
879
880
CXFA_EventParam Param; Param.m_eType = XFA_EVENT_PostSubmit; CXFA_Node* pNode = it->MoveToNext(); while (pNode) { pWidgetHandler->ProcessEvent(pNode, &Param); pNode = it->MoveToNext(); } m_pContext->GetXFADocView()->UpdateDocView(); }
+ show +
881
882
883
884
885
886
bool CPDFXFA_DocEnvironment::NotifySubmit(bool bPrevOrPost) { if (bPrevOrPost) return OnBeforeNotifySubmit(); OnAfterNotifySubmit(); return true;
+ show +
887
888
889
890
891
892
893
894
895
896
} bool CPDFXFA_DocEnvironment::SubmitInternal(CXFA_FFDoc* hDoc, CXFA_Submit* submit) { CPDFSDK_FormFillEnvironment* pFormFillEnv = m_pContext->GetFormFillEnv(); if (!pFormFillEnv) return false; WideString csURL = submit->GetSubmitTarget(); if (csURL.IsEmpty()) {

[CVE-2023-40093_1.diff] cpdfxfa_page.cpp #4
- NOTREACHED(); - return false; -void CPDFXFA_Page::LoadPDFPageFromDict(CPDF_Dictionary* pPageDict) { - ASSERT(pPageDict); - m_pPDFPage = pdfium::MakeRetain<CPDF_Page>(GetDocument(), pPageDict); - m_pPDFPage->SetRenderCache( - pdfium::MakeUnique<CPDF_PageRenderCache>(m_pPDFPage.Get())); +void CPDFXFA_Page::LoadPDFPageFromDict(RetainPtr<CPDF_Dictionary> pPageDict) { + DCHECK(pPageDict); + m_pPDFPage = + pdfium::MakeRetain<CPDF_Page>(GetDocument(), std::move(pPageDict)); + m_pPDFPage->AddPageImageCache();
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
63
64
65
66
67
68
69
70
71
72
bool CPDFXFA_Page::LoadPage() { auto* pContext = static_cast<CPDFXFA_Context*>(m_pDocument->GetExtension()); switch (pContext->GetFormType()) { case FormType::kNone: case FormType::kAcroForm: case FormType::kXFAForeground: return LoadPDFPage(); case FormType::kXFAFull: return !!GetXFAPageView(); }
+ show +
73
74
75
76
77
78
79
80
81
NOTREACHED(); return false; } void CPDFXFA_Page::LoadPDFPageFromDict(CPDF_Dictionary* pPageDict) { ASSERT(pPageDict); m_pPDFPage = pdfium::MakeRetain<CPDF_Page>(GetDocument(), pPageDict); m_pPDFPage->SetRenderCache( pdfium::MakeUnique<CPDF_PageRenderCache>(m_pPDFPage.Get()));
+ show +
82
83
84
85
86
87
88
89
90
91
m_pPDFPage->ParseContent(); } float CPDFXFA_Page::GetPageWidth() const { CXFA_FFPageView* pPageView = GetXFAPageView(); if (!m_pPDFPage && !pPageView) return 0.0f; auto* pContext = static_cast<CPDFXFA_Context*>(m_pDocument->GetExtension()); switch (pContext->GetFormType()) {

[CVE-2023-40093_1.diff] cpwl_scroll_bar.h #3
+#include "fpdfsdk/pwl/cpwl_sbbutton.h" -enum PWL_SCROLLBAR_TYPE { SBT_HSCROLL, SBT_VSCROLL }; - -enum PWL_SBBUTTON_TYPE { PSBT_MIN, PSBT_MAX, PSBT_POS }; - -class CPWL_SBButton final : public CPWL_Wnd { - public: - CPWL_SBButton( - const CreateParams& cp, - std::unique_ptr<IPWL_SystemHandler::PerWindowData> pAttachedData, - PWL_SCROLLBAR_TYPE eScrollBarType, - PWL_SBBUTTON_TYPE eButtonType); - ~CPWL_SBButton() override; - - // CPWL_Wnd - void DrawThisAppearance(CFX_RenderDevice* pDevice, - const CFX_Matrix& mtUser2Device) override; - bool OnLButtonDown(const CFX_PointF& point, uint32_t nFlag) override; - bool OnLButtonUp(const CFX_PointF& point, uint32_t nFlag) override; - bool OnMouseMove(const CFX_PointF& point, uint32_t nFlag) override; - - private: - PWL_SCROLLBAR_TYPE m_eScrollBarType; - PWL_SBBUTTON_TYPE m_eSBButtonType; - bool m_bMouseDown = false; -}; -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/pwl/cpwl_scroll_bar.h
31
32
33
34
35
36
37
38
39
40
return !(*this == that); } float fContentMin; float fContentMax; float fPlateWidth; float fBigStep; float fSmallStep; };
+ show +
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
enum PWL_SCROLLBAR_TYPE { SBT_HSCROLL, SBT_VSCROLL }; enum PWL_SBBUTTON_TYPE { PSBT_MIN, PSBT_MAX, PSBT_POS }; class CPWL_SBButton final : public CPWL_Wnd { public: CPWL_SBButton( const CreateParams& cp, std::unique_ptr<IPWL_SystemHandler::PerWindowData> pAttachedData, PWL_SCROLLBAR_TYPE eScrollBarType, PWL_SBBUTTON_TYPE eButtonType); ~CPWL_SBButton() override; // CPWL_Wnd void DrawThisAppearance(CFX_RenderDevice* pDevice, const CFX_Matrix& mtUser2Device) override; bool OnLButtonDown(const CFX_PointF& point, uint32_t nFlag) override; bool OnLButtonUp(const CFX_PointF& point, uint32_t nFlag) override; bool OnMouseMove(const CFX_PointF& point, uint32_t nFlag) override; private: PWL_SCROLLBAR_TYPE m_eScrollBarType; PWL_SBBUTTON_TYPE m_eSBButtonType; bool m_bMouseDown = false; };
+ show +
66
67
68
69
70
71
72
73
74
75
struct PWL_FLOATRANGE { public: PWL_FLOATRANGE() = default; bool operator==(const PWL_FLOATRANGE& that) const { return fMin == that.fMin && fMax == that.fMax; } bool operator!=(const PWL_FLOATRANGE& that) const { return !(*this == that); }

[CVE-2023-40093_1.diff] cpwl_wnd.cpp #7
- CFX_Matrix mt = pChild->GetChildMatrix(); - if (mt.IsIdentity()) { - pChild->DrawAppearance(pDevice, mtUser2Device); - continue; - } - mt.Concat(mtUser2Device); - pChild->DrawAppearance(pDevice, mt); + pChild->DrawAppearance(pDevice, mtUser2Device); -bool CPWL_Wnd::InvalidateRect(CFX_FloatRect* pRect) { +bool CPWL_Wnd::InvalidateRect(const CFX_FloatRect* pRect) {
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/pwl/cpwl_wnd.cpp
234
235
236
237
238
239
240
241
242
243
static_cast<float>(GetBorderWidth()), GetBorderColor(), GetBorderLeftTopColor(GetBorderStyle()), GetBorderRightBottomColor(GetBorderStyle()), GetBorderStyle(), GetTransparency()); } } void CPWL_Wnd::DrawChildAppearance(CFX_RenderDevice* pDevice, const CFX_Matrix& mtUser2Device) { for (const auto& pChild : m_Children) {
+ show +
244
245
246
247
248
249
250
251
252
253
254
CFX_Matrix mt = pChild->GetChildMatrix(); if (mt.IsIdentity()) { pChild->DrawAppearance(pDevice, mtUser2Device); continue; } mt.Concat(mtUser2Device); pChild->DrawAppearance(pDevice, mt); } } bool CPWL_Wnd::InvalidateRect(CFX_FloatRect* pRect) {
+ show +
255
256
257
258
259
260
261
262
263
264
if (!IsValid()) return true; ObservedPtr<CPWL_Wnd> thisObserved(this); CFX_FloatRect rcRefresh = pRect ? *pRect : GetWindowRect(); if (!HasFlag(PWS_NOREFRESHCLIP)) { CFX_FloatRect rcClip = GetClipRect(); if (!rcClip.IsEmpty()) rcRefresh.Intersect(rcClip); }

[CVE-2023-40093_1.diff] cpwl_wnd.cpp #16
- scp.dwFlags = - PWS_CHILD | PWS_BACKGROUND | PWS_AUTOTRANSPARENT | PWS_NOREFRESHCLIP; - scp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR; - scp.eCursorType = FXCT_ARROW; - scp.nTransparency = PWL_SCROLLBAR_TRANSPARENCY; + scp.dwFlags = PWS_BACKGROUND | PWS_AUTOTRANSPARENT | PWS_NOREFRESHCLIP; + scp.sBackgroundColor = kDefaultWhiteColor; + scp.eCursorType = IPWL_FillerNotify::CursorStyle::kArrow; + scp.nTransparency = CPWL_ScrollBar::kTransparency; - auto pBar = - pdfium::MakeUnique<CPWL_ScrollBar>(scp, CloneAttachedData(), SBT_VSCROLL); + auto pBar = std::make_unique<CPWL_ScrollBar>(scp, CloneAttachedData());
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/pwl/cpwl_wnd.cpp
476
477
478
479
480
481
482
483
484
485
void CPWL_Wnd::CreateScrollBar(const CreateParams& cp) { CreateVScrollBar(cp); } void CPWL_Wnd::CreateVScrollBar(const CreateParams& cp) { if (m_pVScrollBar || !HasFlag(PWS_VSCROLL)) return; CreateParams scp = cp;
+ show +
486
487
488
489
490
491
492
493
scp.dwFlags = PWS_CHILD | PWS_BACKGROUND | PWS_AUTOTRANSPARENT | PWS_NOREFRESHCLIP; scp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR; scp.eCursorType = FXCT_ARROW; scp.nTransparency = PWL_SCROLLBAR_TRANSPARENCY; auto pBar = pdfium::MakeUnique<CPWL_ScrollBar>(scp, CloneAttachedData(), SBT_VSCROLL);
+ show +
494
495
496
497
498
499
500
501
502
503
m_pVScrollBar = pBar.get(); AddChild(std::move(pBar)); m_pVScrollBar->Realize(); } void CPWL_Wnd::SetCapture() { if (CPWL_MsgControl* pMsgCtrl = GetMsgControl()) pMsgCtrl->SetCapture(this); }

[CVE-2023-40093_1.diff] cpwl_wnd.cpp #20
- case BorderStyle::BEVELED: - return CFX_Color(CFX_Color::kGray, 1); - case BorderStyle::INSET: - return CFX_Color(CFX_Color::kGray, 0.5f); + case BorderStyle::kBeveled: + return CFX_Color(CFX_Color::Type::kGray, 1); + case BorderStyle::kInset: + return CFX_Color(CFX_Color::Type::kGray, 0.5f);
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/pwl/cpwl_wnd.cpp
652
653
654
655
656
657
658
659
660
661
float CPWL_Wnd::GetFontSize() const { return m_CreationParams.fFontSize; } void CPWL_Wnd::SetFontSize(float fFontSize) { m_CreationParams.fFontSize = fFontSize; } CFX_Color CPWL_Wnd::GetBorderLeftTopColor(BorderStyle nBorderStyle) const { switch (nBorderStyle) {
+ show +
662
663
664
665
case BorderStyle::BEVELED: return CFX_Color(CFX_Color::kGray, 1); case BorderStyle::INSET: return CFX_Color(CFX_Color::kGray, 0.5f);
+ show +
666
667
668
669
670
671
672
673
674
675
default: return CFX_Color(); } } CFX_Color CPWL_Wnd::GetBorderRightBottomColor(BorderStyle nBorderStyle) const { switch (nBorderStyle) { case BorderStyle::BEVELED: return GetBackgroundColor() / 2.0f; case BorderStyle::INSET:

[CVE-2023-40093_1.diff] cpwl_combo_box.cpp #5
+void CPWL_ComboBox::ReplaceAndKeepSelection(const WideString& text) { + if (m_pEdit) + m_pEdit->ReplaceAndKeepSelection(text); +} + +bool CPWL_ComboBox::SelectAllText() { + return m_pEdit && m_pEdit->SelectAllText(); +} + -void CPWL_ComboBox::GetEditSelection(int32_t& nStartChar, - int32_t& nEndChar) const { - nStartChar = -1; - nEndChar = -1; - - if (m_pEdit) - m_pEdit->GetSelection(nStartChar, nEndChar); -} -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/pwl/cpwl_combo_box.cpp
246
247
248
249
250
251
252
253
254
255
m_pEdit->SetText(m_pList->GetText()); m_nSelectItem = nItemIndex; } void CPWL_ComboBox::SetEditSelection(int32_t nStartChar, int32_t nEndChar) { if (m_pEdit) m_pEdit->SetSelection(nStartChar, nEndChar); }
+ show +
256
257
258
259
260
261
262
void CPWL_ComboBox::GetEditSelection(int32_t& nStartChar, int32_t& nEndChar) const { nStartChar = -1; nEndChar = -1; if (m_pEdit) m_pEdit->GetSelection(nStartChar, nEndChar);
+ show +
263
264
265
266
267
268
269
270
271
272
} void CPWL_ComboBox::ClearSelection() { if (m_pEdit) m_pEdit->ClearSelection(); } void CPWL_ComboBox::CreateChildWnd(const CreateParams& cp) { CreateEdit(cp); CreateButton(cp);

[CVE-2023-40093_1.diff] cpwl_wnd.h #5
-// Cursor style. These must match the values in public/fpdf_formfill.h -#define FXCT_ARROW 0 -#define FXCT_NESW 1 -#define FXCT_NWSE 2 -#define FXCT_VBEAM 3 -#define FXCT_HBEAM 4 -#define FXCT_HAND 5 -
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/pwl/cpwl_wnd.h
54
55
56
57
58
59
60
61
62
63
#define PES_NOREAD 0x8000L // listbox styles #define PLBS_MULTIPLESEL 0x0001L #define PLBS_HOVERSEL 0x0008L // combobox styles #define PCBS_ALLOWCUSTOMTEXT 0x0001L // Cursor style. These must match the values in public/fpdf_formfill.h
+ show +
64
65
66
67
68
69
#define FXCT_ARROW 0 #define FXCT_NESW 1 #define FXCT_NWSE 2 #define FXCT_VBEAM 3 #define FXCT_HBEAM 4 #define FXCT_HAND 5
+ show +
70
71
72
73
74
75
76
77
78
79
struct CPWL_Dash { CPWL_Dash() : nDash(0), nGap(0), nPhase(0) {} CPWL_Dash(int32_t dash, int32_t gap, int32_t phase) : nDash(dash), nGap(gap), nPhase(phase) {} void Reset() { nDash = 0; nGap = 0; nPhase = 0;
/media/esteban/ACOS/dotOS/external/pdfium/public/fpdf_formfill.h
314
315
316
317
318
319
320
321
322
323
/* Version 2. */ void* m_isolate; /* Unused in v3, retain for compatibility. */ unsigned int m_v8EmbedderSlot; /* Unused in v3, retain for compatibility. */ /* Version 3. */ /* Version 3 moves m_Isolate and m_v8EmbedderSlot to FPDF_LIBRARY_CONFIG. */ } IPDF_JSPLATFORM; // Flags for Cursor type
+ show +
324
325
326
327
328
329
#define FXCT_ARROW 0 #define FXCT_NESW 1 #define FXCT_NWSE 2 #define FXCT_VBEAM 3 #define FXCT_HBEAM 4 #define FXCT_HAND 5
+ show +
330
331
332
333
334
335
336
337
338
339
/* * Function signature for the callback function passed to the FFI_SetTimer * method. * Parameters: * idEvent - Identifier of the timer. * Return value: * None. */ typedef void (*TimerCallback)(int idEvent);

[CVE-2023-40093_1.diff] cpwl_scroll_bar.cpp #11
- switch (m_sbType) { - case SBT_HSCROLL: - pos = pos - m_OriginInfo.fContentMin; - break; - case SBT_VSCROLL: - pos = m_OriginInfo.fContentMax - pos; - break; - } + pos = m_OriginInfo.fContentMax - pos;
/media/esteban/ACOS/dotOS/external/pdfium/fpdfsdk/pwl/cpwl_scroll_bar.cpp
485
486
487
488
489
490
491
492
493
494
return; m_OriginInfo = info; float fMax = std::max(0.0f, info.fContentMax - info.fContentMin - info.fPlateWidth); SetScrollRange(0, fMax, info.fPlateWidth); SetScrollStep(info.fBigStep, info.fSmallStep); } void CPWL_ScrollBar::SetScrollPosition(float pos) {
+ show +
495
496
497
498
499
500
501
switch (m_sbType) { case SBT_HSCROLL: pos = pos - m_OriginInfo.fContentMin; break; case SBT_VSCROLL: pos = m_OriginInfo.fContentMax - pos; break;
+ show +
502
503
504
505
506
507
508
509
510
511
} SetScrollPos(pos); } void CPWL_ScrollBar::NotifyLButtonDown(CPWL_Wnd* child, const CFX_PointF& pos) { if (child == m_pMinButton) OnMinButtonLBDown(pos); else if (child == m_pMaxButton) OnMaxButtonLBDown(pos); else if (child == m_pPosButton)

[CVE-2023-40093_1.diff] cbc_ean8.h #2
-#include "core/fxcrt/fx_string.h" -#include "core/fxcrt/fx_system.h" -#include "fxbarcode/cbc_eancode.h" +#include <stddef.h> -class CBC_OnedEAN8Writer; +#include "fxbarcode/BC_Library.h" +#include "fxbarcode/cbc_eancode.h"
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/cbc_ean8.h
1
2
3
4
5
6
7
8
9
// Copyright 2016 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef FXBARCODE_CBC_EAN8_H_ #define FXBARCODE_CBC_EAN8_H_
+ show +
10
11
12
13
14
#include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" #include "fxbarcode/cbc_eancode.h" class CBC_OnedEAN8Writer;
+ show +
15
16
17
18
19
20
21
22
23
24
class CBC_EAN8 final : public CBC_EANCode { public: CBC_EAN8(); ~CBC_EAN8() override; // CBC_EANCode: BC_TYPE GetType() override; BCFORMAT GetFormat() const override; size_t GetMaxLength() const override;

[CVE-2023-40093_1.diff] cbc_upca.h #2
-#include "core/fxcrt/fx_string.h" -#include "core/fxcrt/fx_system.h" -#include "fxbarcode/cbc_eancode.h" +#include <stddef.h> -class CBC_OnedUPCAWriter; +#include "fxbarcode/BC_Library.h" +#include "fxbarcode/cbc_eancode.h"
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/cbc_upca.h
1
2
3
4
5
6
7
8
9
// Copyright 2016 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef FXBARCODE_CBC_UPCA_H_ #define FXBARCODE_CBC_UPCA_H_
+ show +
10
11
12
13
14
#include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" #include "fxbarcode/cbc_eancode.h" class CBC_OnedUPCAWriter;
+ show +
15
16
17
18
19
20
21
22
23
24
class CBC_UPCA final : public CBC_EANCode { public: CBC_UPCA(); ~CBC_UPCA() override; // CBC_EANCode: BC_TYPE GetType() override; BCFORMAT GetFormat() const override; size_t GetMaxLength() const override;

[CVE-2023-40093_1.diff] cbc_onecode.cpp #2
-CBC_OneCode::~CBC_OneCode() {} - -bool CBC_OneCode::CheckContentValidity(WideStringView contents) { - return GetOneDimWriter()->CheckContentValidity(contents); -} - -WideString CBC_OneCode::FilterContents(WideStringView contents) { - return GetOneDimWriter()->FilterContents(contents); -} +CBC_OneCode::~CBC_OneCode() = default;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/cbc_onecode.cpp
21
22
23
24
25
26
27
28
29
30
#include "fxbarcode/cbc_onecode.h" #include <utility> #include "fxbarcode/oned/BC_OneDimWriter.h" CBC_OneCode::CBC_OneCode(std::unique_ptr<CBC_Writer> pWriter) : CBC_CodeBase(std::move(pWriter)) {}
+ show +
31
32
33
34
35
36
37
38
CBC_OneCode::~CBC_OneCode() {} bool CBC_OneCode::CheckContentValidity(WideStringView contents) { return GetOneDimWriter()->CheckContentValidity(contents); } WideString CBC_OneCode::FilterContents(WideStringView contents) { return GetOneDimWriter()->FilterContents(contents);
+ show +
39
40
41
42
43
44
45
46
47
48
} void CBC_OneCode::SetPrintChecksum(bool checksum) { GetOneDimWriter()->SetPrintChecksum(checksum); } void CBC_OneCode::SetDataLength(int32_t length) { GetOneDimWriter()->SetDataLength(length); }

[CVE-2023-40093_1.diff] cbc_ean13.h #2
-#include "core/fxcrt/fx_string.h" -#include "core/fxcrt/fx_system.h" -#include "fxbarcode/cbc_eancode.h" +#include <stddef.h> -class CBC_OnedEAN13Writer; +#include "fxbarcode/BC_Library.h" +#include "fxbarcode/cbc_eancode.h"
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/cbc_ean13.h
1
2
3
4
5
6
7
8
9
// Copyright 2016 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef FXBARCODE_CBC_EAN13_H_ #define FXBARCODE_CBC_EAN13_H_
+ show +
10
11
12
13
14
#include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" #include "fxbarcode/cbc_eancode.h" class CBC_OnedEAN13Writer;
+ show +
15
16
17
18
19
20
21
22
23
24
class CBC_EAN13 final : public CBC_EANCode { public: CBC_EAN13(); ~CBC_EAN13() override; // CBC_EANCode: BC_TYPE GetType() override; BCFORMAT GetFormat() const override; size_t GetMaxLength() const override;

[CVE-2023-40093_1.diff] BC_PDF417Writer.cpp #3
-std::vector<uint8_t> CBC_PDF417Writer::Encode(WideStringView contents, - int32_t* pOutWidth, - int32_t* pOutHeight) { - std::vector<uint8_t> results; +DataVector<uint8_t> CBC_PDF417Writer::Encode(WideStringView contents, + int32_t* pOutWidth, + int32_t* pOutHeight) {
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/pdf417/BC_PDF417Writer.cpp
36
37
38
39
40
41
42
43
44
45
CBC_PDF417Writer::~CBC_PDF417Writer() = default; bool CBC_PDF417Writer::SetErrorCorrectionLevel(int32_t level) { if (level < 0 || level > 8) { return false; } set_error_correction_level(level); return true; }
+ show +
46
47
48
49
std::vector<uint8_t> CBC_PDF417Writer::Encode(WideStringView contents, int32_t* pOutWidth, int32_t* pOutHeight) { std::vector<uint8_t> results;
+ show +
50
51
52
53
54
55
56
57
58
59
CBC_PDF417 encoder; int32_t col = (m_Width / m_ModuleWidth - 69) / 17; int32_t row = m_Height / (m_ModuleWidth * 20); if (row >= 3 && row <= 90 && col >= 1 && col <= 30) encoder.setDimensions(col, 1, row, 3); else if (col >= 1 && col <= 30) encoder.setDimensions(col, col, 90, 3); else if (row >= 3 && row <= 90) encoder.setDimensions(30, 1, row, row); if (!encoder.GenerateBarcodeLogic(contents, error_correction_level()))

[CVE-2023-40093_1.diff] BC_HighLevelEncoder.cpp #6
- encoders.push_back(pdfium::MakeUnique<CBC_ASCIIEncoder>()); - encoders.push_back(pdfium::MakeUnique<CBC_C40Encoder>()); - encoders.push_back(pdfium::MakeUnique<CBC_TextEncoder>()); - encoders.push_back(pdfium::MakeUnique<CBC_X12Encoder>()); - encoders.push_back(pdfium::MakeUnique<CBC_EdifactEncoder>()); - encoders.push_back(pdfium::MakeUnique<CBC_Base256Encoder>()); + encoders.push_back(std::make_unique<CBC_ASCIIEncoder>()); + encoders.push_back(std::make_unique<CBC_C40Encoder>()); + encoders.push_back(std::make_unique<CBC_TextEncoder>()); + encoders.push_back(std::make_unique<CBC_X12Encoder>()); + encoders.push_back(std::make_unique<CBC_EdifactEncoder>()); + encoders.push_back(std::make_unique<CBC_Base256Encoder>());
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/datamatrix/BC_HighLevelEncoder.cpp
138
139
140
141
142
143
144
145
146
147
context.setSkipAtEnd(2); context.m_pos += 6; } else if (left == kMacro06Header) { context.writeCodeword(kMacro06); context.setSkipAtEnd(2); context.m_pos += 6; } } std::vector<std::unique_ptr<CBC_Encoder>> encoders;
+ show +
148
149
150
151
152
153
encoders.push_back(pdfium::MakeUnique<CBC_ASCIIEncoder>()); encoders.push_back(pdfium::MakeUnique<CBC_C40Encoder>()); encoders.push_back(pdfium::MakeUnique<CBC_TextEncoder>()); encoders.push_back(pdfium::MakeUnique<CBC_X12Encoder>()); encoders.push_back(pdfium::MakeUnique<CBC_EdifactEncoder>()); encoders.push_back(pdfium::MakeUnique<CBC_Base256Encoder>());
+ show +
154
155
156
157
158
159
160
161
162
163
Encoding encodingMode = Encoding::ASCII; while (context.hasMoreCharacters()) { if (!encoders[EncoderIndex(encodingMode)]->Encode(&context)) return WideString(); if (context.m_newEncoding != Encoding::UNKNOWN) { encodingMode = context.m_newEncoding; context.ResetEncoderSignal(); } }

[CVE-2023-40093_1.diff] BC_DefaultPlacement.cpp #4
- if (!hasBit(m_numcols - 1, m_numrows - 1)) { - setBit(m_numcols - 1, m_numrows - 1, true); - setBit(m_numcols - 2, m_numrows - 2, true); + if (!HasBit(m_numcols - 1, m_numrows - 1)) { + SetBit(m_numcols - 1, m_numrows - 1, true); + SetBit(m_numcols - 2, m_numrows - 2, true); -void CBC_DefaultPlacement::module(int32_t row, - int32_t col, - int32_t pos, - int32_t bit) { + +void CBC_DefaultPlacement::SetModule(int32_t row, + int32_t col, + int32_t pos, + int32_t bit) {
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/datamatrix/BC_DefaultPlacement.cpp
87
88
89
90
91
92
93
94
95
96
do { if ((row >= 0) && (col < m_numcols) && !hasBit(col, row)) { utah(row, col, pos++); } row += 2; col -= 2; } while ((row < m_numrows) && (col >= 0)); row += 3; col++; } while ((row < m_numrows) || (col < m_numcols));
+ show +
97
98
99
100
101
102
103
104
105
if (!hasBit(m_numcols - 1, m_numrows - 1)) { setBit(m_numcols - 1, m_numrows - 1, true); setBit(m_numcols - 2, m_numrows - 2, true); } } void CBC_DefaultPlacement::module(int32_t row, int32_t col, int32_t pos, int32_t bit) {
+ show +
106
107
108
109
110
111
112
113
114
115
if (row < 0) { row += m_numrows; col += 4 - ((m_numrows + 4) % 8); } if (col < 0) { col += m_numcols; row += 4 - ((m_numcols + 4) % 8); } int32_t v = m_codewords[pos]; v &= 1 << (8 - bit);

[CVE-2023-40093_1.diff] BC_QRCoderMode.h #2
- static CBC_QRCoderMode* sKANJI; - static CBC_QRCoderMode* sECI; - static CBC_QRCoderMode* sGBK; - static CBC_QRCoderMode* sTERMINATOR; - static CBC_QRCoderMode* sFNC1_FIRST_POSITION; - static CBC_QRCoderMode* sFNC1_SECOND_POSITION; - static CBC_QRCoderMode* sSTRUCTURED_APPEND;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/qrcode/BC_QRCoderMode.h
17
18
19
20
21
22
23
24
25
26
static void Initialize(); static void Finalize(); int32_t GetCharacterCountBits(int32_t number) const; int32_t GetBits() const; static CBC_QRCoderMode* sBYTE; static CBC_QRCoderMode* sNUMERIC; static CBC_QRCoderMode* sALPHANUMERIC;
+ show +
27
28
29
30
31
32
33
static CBC_QRCoderMode* sKANJI; static CBC_QRCoderMode* sECI; static CBC_QRCoderMode* sGBK; static CBC_QRCoderMode* sTERMINATOR; static CBC_QRCoderMode* sFNC1_FIRST_POSITION; static CBC_QRCoderMode* sFNC1_SECOND_POSITION; static CBC_QRCoderMode* sSTRUCTURED_APPEND;
+ show +
34
35
36
37
38
39
40
41
42
private: CBC_QRCoderMode(std::vector<int32_t> charCountBits, int32_t bits); std::vector<int32_t> m_characterCountBitsForVersions; const int32_t m_bits; }; #endif // FXBARCODE_QRCODE_BC_QRCODERMODE_H_

[CVE-2023-40093_1.diff] BC_QRCoderVersion.cpp #3
- m_ecBlocksArray[0] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[0]); - m_ecBlocksArray[1] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[1]); - m_ecBlocksArray[2] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[2]); - m_ecBlocksArray[3] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[3]); + m_ecBlocksArray[0] = std::make_unique<CBC_QRCoderECBlocks>(data[0]); + m_ecBlocksArray[1] = std::make_unique<CBC_QRCoderECBlocks>(data[1]); + m_ecBlocksArray[2] = std::make_unique<CBC_QRCoderECBlocks>(data[2]); + m_ecBlocksArray[3] = std::make_unique<CBC_QRCoderECBlocks>(data[3]);
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/qrcode/BC_QRCoderVersion.cpp
33
34
35
36
37
38
39
40
41
42
namespace { std::vector<std::unique_ptr<CBC_QRCoderVersion>>* g_VERSION = nullptr; } // namespace CBC_QRCoderVersion::CBC_QRCoderVersion(int32_t versionNumber, const CBC_QRCoderECBlockData data[4]) : m_versionNumber(versionNumber) {
+ show +
43
44
45
46
m_ecBlocksArray[0] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[0]); m_ecBlocksArray[1] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[1]); m_ecBlocksArray[2] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[2]); m_ecBlocksArray[3] = pdfium::MakeUnique<CBC_QRCoderECBlocks>(data[3]);
+ show +
47
48
49
50
51
52
53
54
55
56
m_totalCodeWords = m_ecBlocksArray[0]->GetTotalDataCodeWords(); } CBC_QRCoderVersion::~CBC_QRCoderVersion() = default; // static void CBC_QRCoderVersion::Initialize() { g_VERSION = new std::vector<std::unique_ptr<CBC_QRCoderVersion>>(); }

[CVE-2023-40093_1.diff] BC_QRCodeWriter.h #3
- std::vector<uint8_t> Encode(WideStringView contents, - int32_t ecLevel, - int32_t* pOutWidth, - int32_t* pOutHeight); + DataVector<uint8_t> Encode(WideStringView contents, + int32_t ecLevel, + int32_t* pOutWidth, + int32_t* pOutHeight);
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/qrcode/BC_QRCodeWriter.h
9
10
11
12
13
14
15
16
17
18
#include <vector> #include "fxbarcode/BC_TwoDimWriter.h" class CBC_QRCodeWriter final : public CBC_TwoDimWriter { public: CBC_QRCodeWriter(); ~CBC_QRCodeWriter() override;
+ show +
19
20
21
22
std::vector<uint8_t> Encode(WideStringView contents, int32_t ecLevel, int32_t* pOutWidth, int32_t* pOutHeight);
+ show +
23
24
25
26
27
28
// CBC_TwoDimWriter bool SetErrorCorrectionLevel(int32_t level) override; }; #endif // FXBARCODE_QRCODE_BC_QRCODEWRITER_H_

[CVE-2023-40093_1.diff] BC_QRCodeWriter.cpp #4
-std::vector<uint8_t> CBC_QRCodeWriter::Encode(WideStringView contents, - int32_t ecLevel, - int32_t* pOutWidth, - int32_t* pOutHeight) { - std::vector<uint8_t> results; +DataVector<uint8_t> CBC_QRCodeWriter::Encode(WideStringView contents, + int32_t ecLevel, + int32_t* pOutWidth, + int32_t* pOutHeight) {
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/qrcode/BC_QRCodeWriter.cpp
36
37
38
39
40
41
42
43
44
45
CBC_QRCodeWriter::~CBC_QRCodeWriter() = default; bool CBC_QRCodeWriter::SetErrorCorrectionLevel(int32_t level) { if (level < 0 || level > 3) { return false; } set_error_correction_level(level); return true; }
+ show +
46
47
48
49
50
std::vector<uint8_t> CBC_QRCodeWriter::Encode(WideStringView contents, int32_t ecLevel, int32_t* pOutWidth, int32_t* pOutHeight) { std::vector<uint8_t> results;
+ show +
51
52
53
54
55
56
57
58
59
60
CBC_QRCoderErrorCorrectionLevel* ec = nullptr; switch (ecLevel) { case 0: ec = CBC_QRCoderErrorCorrectionLevel::L; break; case 1: ec = CBC_QRCoderErrorCorrectionLevel::M; break; case 2: ec = CBC_QRCoderErrorCorrectionLevel::Q;

[CVE-2023-40093_1.diff] BC_QRCoderEncoder.cpp #13
- std::vector<uint8_t> dataBytes(numDataBytesInBlock); - memcpy(dataBytes.data(), bits->GetArray() + dataBytesOffset, - numDataBytesInBlock); - std::vector<uint8_t> ecBytes = - GenerateECBytes(dataBytes, numEcBytesInBlock); + DataVector<uint8_t> dataBytes(numDataBytesInBlock); + fxcrt::spancpy( + pdfium::make_span(dataBytes), + bits->GetArray().subspan(dataBytesOffset, numDataBytesInBlock)); + DataVector<uint8_t> ecBytes = GenerateECBytes(dataBytes, numEcBytesInBlock);
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/qrcode/BC_QRCoderEncoder.cpp
358
359
360
361
362
363
364
365
366
367
std::vector<QRCoderBlockPair> blocks(numRSBlocks); for (int32_t i = 0; i < numRSBlocks; i++) { int32_t numDataBytesInBlock; int32_t numEcBytesInBlock; GetNumDataBytesAndNumECBytesForBlockID(numTotalBytes, numDataBytes, numRSBlocks, i, &numDataBytesInBlock, &numEcBytesInBlock); if (numDataBytesInBlock < 0 || numEcBytesInBlock <= 0) return false;
+ show +
368
369
370
371
372
std::vector<uint8_t> dataBytes(numDataBytesInBlock); memcpy(dataBytes.data(), bits->GetArray() + dataBytesOffset, numDataBytesInBlock); std::vector<uint8_t> ecBytes = GenerateECBytes(dataBytes, numEcBytesInBlock);
+ show +
373
374
375
376
377
378
379
380
381
382
if (ecBytes.empty()) return false; maxNumDataBytes = std::max(maxNumDataBytes, dataBytes.size()); maxNumEcBytes = std::max(maxNumEcBytes, ecBytes.size()); blocks[i].data = std::move(dataBytes); blocks[i].ecc = std::move(ecBytes); dataBytesOffset += numDataBytesInBlock; } if (numDataBytes != dataBytesOffset)

[CVE-2023-40093_1.diff] BC_QRCoderMode.cpp #2
+#include "third_party/base/check.h" -CBC_QRCoderMode* CBC_QRCoderMode::sKANJI = nullptr; -CBC_QRCoderMode* CBC_QRCoderMode::sECI = nullptr; -CBC_QRCoderMode* CBC_QRCoderMode::sGBK = nullptr; -CBC_QRCoderMode* CBC_QRCoderMode::sTERMINATOR = nullptr; -CBC_QRCoderMode* CBC_QRCoderMode::sFNC1_FIRST_POSITION = nullptr; -CBC_QRCoderMode* CBC_QRCoderMode::sFNC1_SECOND_POSITION = nullptr; -CBC_QRCoderMode* CBC_QRCoderMode::sSTRUCTURED_APPEND = nullptr;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/qrcode/BC_QRCoderMode.cpp
22
23
24
25
26
27
28
29
30
31
#include "fxbarcode/qrcode/BC_QRCoderMode.h" #include <utility> #include "core/fxcrt/fx_system.h" CBC_QRCoderMode* CBC_QRCoderMode::sBYTE = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sNUMERIC = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sALPHANUMERIC = nullptr;
+ show +
32
33
34
35
36
37
38
CBC_QRCoderMode* CBC_QRCoderMode::sKANJI = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sECI = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sGBK = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sTERMINATOR = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sFNC1_FIRST_POSITION = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sFNC1_SECOND_POSITION = nullptr; CBC_QRCoderMode* CBC_QRCoderMode::sSTRUCTURED_APPEND = nullptr;
+ show +
39
40
41
42
43
44
45
46
47
48
CBC_QRCoderMode::CBC_QRCoderMode(std::vector<int32_t> charCountBits, int32_t bits) : m_characterCountBitsForVersions(std::move(charCountBits)), m_bits(bits) {} CBC_QRCoderMode::~CBC_QRCoderMode() = default; void CBC_QRCoderMode::Initialize() { sBYTE = new CBC_QRCoderMode({8, 16, 16}, 0x4); sALPHANUMERIC = new CBC_QRCoderMode({9, 11, 13}, 0x2);

[CVE-2023-40093_1.diff] BC_QRCoderMaskUtil.cpp #4
- int32_t width = matrix->GetWidth(); - int32_t height = matrix->GetHeight(); - for (int32_t y = 0; y < height - 1; y++) { - for (int32_t x = 0; x < width - 1; x++) { + size_t width = matrix->GetWidth(); + size_t height = matrix->GetHeight(); + for (size_t y = 0; y + 1 < height; y++) { + for (size_t x = 0; x + 1 < width; x++) {
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/qrcode/BC_QRCoderMaskUtil.cpp
65
66
67
68
69
70
71
72
73
74
CBC_CommonByteMatrix* matrix) { return ApplyMaskPenaltyRule1Internal(matrix, true) + ApplyMaskPenaltyRule1Internal(matrix, false); } // static int32_t CBC_QRCoderMaskUtil::ApplyMaskPenaltyRule2( CBC_CommonByteMatrix* matrix) { int32_t penalty = 0; pdfium::span<const uint8_t> array = matrix->GetArray();
+ show +
75
76
77
78
int32_t width = matrix->GetWidth(); int32_t height = matrix->GetHeight(); for (int32_t y = 0; y < height - 1; y++) { for (int32_t x = 0; x < width - 1; x++) {
+ show +
79
80
81
82
83
84
85
86
87
88
int32_t value = array[y * width + x]; if (value == array[y * width + x + 1] && value == array[(y + 1) * width + x] && value == array[(y + 1) * width + x + 1]) { penalty++; } } } return 3 * penalty; }

[CVE-2023-40093_1.diff] BC_ReedSolomonGF256.cpp #3
- m_zero = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>( - this, std::vector<int32_t>{0}); - m_one = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, - std::vector<int32_t>{1}); + m_zero = + std::make_unique<CBC_ReedSolomonGF256Poly>(this, std::vector<int32_t>{0}); + m_one = + std::make_unique<CBC_ReedSolomonGF256Poly>(this, std::vector<int32_t>{1}); -CBC_ReedSolomonGF256::~CBC_ReedSolomonGF256() {} +CBC_ReedSolomonGF256::~CBC_ReedSolomonGF256() = default;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
36
37
38
39
40
41
42
43
44
45
x ^= primitive; } } for (int32_t i = 0; i < 255; i++) { m_logTable[m_expTable[i]] = i; } m_logTable[0] = 0; } void CBC_ReedSolomonGF256::Init() {
+ show +
46
47
48
49
50
51
52
m_zero = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>( this, std::vector<int32_t>{0}); m_one = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, std::vector<int32_t>{1}); } CBC_ReedSolomonGF256::~CBC_ReedSolomonGF256() {}
+ show +
53
54
55
56
57
58
59
60
61
62
std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256::BuildMonomial( int32_t degree, int32_t coefficient) { if (degree < 0) return nullptr; if (coefficient == 0) return m_zero->Clone();

[CVE-2023-40093_1.diff] BC_OnedEAN13Writer_unittest.cpp #2
- int32_t width; - int32_t height; - uint8_t* encoded; - const char* expected; - encoded = writer.Encode("", BCFORMAT_EAN_13, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); + EXPECT_TRUE(writer.Encode("").empty()); + EXPECT_TRUE(writer.Encode("123").empty()); + EXPECT_TRUE(writer.Encode("123456789012").empty()); + EXPECT_TRUE(writer.Encode("12345678901234").empty()); - encoded = writer.Encode("123", BCFORMAT_EAN_13, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("123456789012", BCFORMAT_EAN_13, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("12345678901234", BCFORMAT_EAN_13, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("1234567890128", BCFORMAT_EAN_13, width, height); - EXPECT_NE(nullptr, encoded); - EXPECT_EQ(1, height); - EXPECT_EQ(95, width); - - expected = + static const char kExpected1[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN13Writer_unittest.cpp
4
5
6
7
8
9
10
11
12
13
#include "fxbarcode/oned/BC_OnedEAN13Writer.h" #include "testing/gtest/include/gtest/gtest.h" namespace { TEST(OnedEAN13WriterTest, Encode) { CBC_OnedEAN13Writer writer; writer.InitEANWriter();
+ show +
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
int32_t width; int32_t height; uint8_t* encoded; const char* expected; // EAN-13 barcodes encode 13-digit numbers into 95 modules in a unidimensional // disposition. encoded = writer.Encode("", BCFORMAT_EAN_13, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("123", BCFORMAT_EAN_13, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("123456789012", BCFORMAT_EAN_13, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("12345678901234", BCFORMAT_EAN_13, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("1234567890128", BCFORMAT_EAN_13, width, height); EXPECT_NE(nullptr, encoded); EXPECT_EQ(1, height); EXPECT_EQ(95, width); expected =
+ show +
43
44
45
46
47
48
49
50
51
52
"# #" // Start // 1 implicit by LLGLGG in next 6 digits " # ##" // 2 L " #### #" // 3 L " ### #" // 4 G " ## #" // 5 L " # #" // 6 G " # #" // 7 G " # # " // Middle "# # " // 8 R

[CVE-2023-40093_1.diff] BC_OnedEAN13Writer_unittest.cpp #3
- for (int i = 0; i < 95; i++) { - EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; - } - FX_Free(encoded); + DataVector<uint8_t> encoded = writer.Encode("1234567890128"); + for (size_t i = 0; i < strlen(kExpected1); i++) + EXPECT_EQ(kExpected1[i] != ' ', !!encoded[i]) << i; - encoded = writer.Encode("7776665554440", BCFORMAT_EAN_13, width, height); - EXPECT_NE(nullptr, encoded); - EXPECT_EQ(1, height); - EXPECT_EQ(95, width); - - expected = + static const char kExpected2[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN13Writer_unittest.cpp
49
50
51
52
53
54
55
56
57
58
" # #" // 6 G " # #" // 7 G " # # " // Middle "# # " // 8 R "### # " // 9 R "### # " // 0 R "## ## " // 1 R "## ## " // 2 R "# # " // 8 R "# #"; // End
+ show +
59
60
61
62
63
64
65
66
67
68
69
for (int i = 0; i < 95; i++) { EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; } FX_Free(encoded); encoded = writer.Encode("7776665554440", BCFORMAT_EAN_13, width, height); EXPECT_NE(nullptr, encoded); EXPECT_EQ(1, height); EXPECT_EQ(95, width); expected =
+ show +
70
71
72
73
74
75
76
77
78
79
"# #" // Start // 7 implicit by LGLGLG in next 6 digits " ### ##" // 7 L " # #" // 7 G " # ####" // 6 L " # #" // 6 G " # ####" // 6 L " ### #" // 5 G " # # " // Middle "# ### " // 5 R

[CVE-2023-40093_1.diff] BC_OnedCode39Writer_unittest.cpp #2
- int32_t width; - int32_t height; - uint8_t* encoded; - const char* expected; - - encoded = writer.Encode("PDFIUM", BCFORMAT_CODE_39, width, height); - expected = + static const char kExpected1[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedCode39Writer_unittest.cpp
28
29
30
31
32
33
34
35
36
37
CBC_OnedCode39Writer writer; EXPECT_FALSE(writer.SetWideNarrowRatio(0)); EXPECT_FALSE(writer.SetWideNarrowRatio(1)); EXPECT_TRUE(writer.SetWideNarrowRatio(2)); EXPECT_TRUE(writer.SetWideNarrowRatio(3)); EXPECT_FALSE(writer.SetWideNarrowRatio(4)); EXPECT_FALSE(writer.SetWideNarrowRatio(100)); writer.SetWideNarrowRatio(3);
+ show +
38
39
40
41
42
43
44
int32_t width; int32_t height; uint8_t* encoded; const char* expected; encoded = writer.Encode("PDFIUM", BCFORMAT_CODE_39, width, height); expected =
+ show +
45
46
47
48
49
50
51
52
53
54
"# # ### ### # " // * Start "# ### ### # # " // P "# # ### # ### " // D "# ### ### # # " // F "# ### # ### # " // I "### # # # ### " // U "### ### # # # " // M "# # ### ### #"; // * End for (size_t i = 0; i < strlen(expected); i++) EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i;

[CVE-2023-40093_1.diff] BC_OnedCode39Writer_unittest.cpp #5
- for (size_t i = 0; i < strlen(expected); i++) - EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; - FX_Free(encoded); + encoded = writer.Encode("PDFIUM"); + ASSERT_EQ(strlen(kExpected3), encoded.size()); + for (size_t i = 0; i < strlen(kExpected3); i++) + EXPECT_EQ(kExpected3[i] != ' ', !!encoded[i]) << i; - encoded = writer.Encode("A -$%./+Z", BCFORMAT_CODE_39, width, height); - EXPECT_EQ(1, height); - EXPECT_EQ((9 + DELIMITER_CHARS) * MODULES_PER_CHAR - 1, width); - expected = + static const char kExpected4[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedCode39Writer_unittest.cpp
106
107
108
109
110
111
112
113
114
115
EXPECT_EQ((6 + DELIMITER_CHARS) * MODULES_PER_CHAR - 1, width); expected = "# # ### ### # " // * Start "# ### ### # # " // P "# # ### # ### " // D "# ### ### # # " // F "# ### # ### # " // I "### # # # ### " // U "### ### # # # " // M "# # ### ### #"; // * End
+ show +
116
117
118
119
120
121
122
123
for (size_t i = 0; i < strlen(expected); i++) EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; FX_Free(encoded); encoded = writer.Encode("A -$%./+Z", BCFORMAT_CODE_39, width, height); EXPECT_EQ(1, height); EXPECT_EQ((9 + DELIMITER_CHARS) * MODULES_PER_CHAR - 1, width); expected =
+ show +
124
125
126
127
128
129
130
131
132
133
"# # ### ### # " // * Start "### # # # ### " // A "# ### # ### # " // Space "# # # ### ### " // - "# # # # # " // $ "# # # # # " // % "### # # ### # " // . "# # # # # " // / "# # # # # " // + "# ### ### # # " // Z

[CVE-2023-40093_1.diff] BC_OnedEAN13Writer.h #3
- uint8_t* EncodeWithHint(const ByteString& contents, - BCFORMAT format, - int32_t& outWidth, - int32_t& outHeight, - int32_t hints) override; - uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override; + DataVector<uint8_t> Encode(const ByteString& contents) override;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedUPCAWriter.h
17
18
19
20
21
22
23
24
25
26
class CFX_DIBitmap; class CFX_Matrix; class CFX_RenderDevice; class CBC_OnedUPCAWriter final : public CBC_OneDimEANWriter { public: CBC_OnedUPCAWriter(); ~CBC_OnedUPCAWriter() override; // CBC_OneDimEANWriter:
+ show +
27
28
29
30
31
32
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
33
34
35
36
37
38
39
40
41
42
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; void InitEANWriter() override; int32_t CalcChecksum(const ByteString& contents) override; private: bool ShowChars(WideStringView contents, CFX_RenderDevice* device, const CFX_Matrix* matrix, int32_t barWidth,
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN13Writer.h
13
14
15
16
17
18
19
20
21
22
class CFX_DIBitmap; class CFX_RenderDevice; class CBC_OnedEAN13Writer final : public CBC_OneDimEANWriter { public: CBC_OnedEAN13Writer(); ~CBC_OnedEAN13Writer() override; // CBC_OneDimEANWriter:
+ show +
23
24
25
26
27
28
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
29
30
31
32
33
34
35
36
37
38
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; int32_t CalcChecksum(const ByteString& contents) override; private: bool ShowChars(WideStringView contents, CFX_RenderDevice* device, const CFX_Matrix* matrix, int32_t barWidth, int32_t multiple) override;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedCode128Writer.h
18
19
20
21
22
23
24
25
26
27
explicit CBC_OnedCode128Writer(BC_TYPE type); ~CBC_OnedCode128Writer() override; // Exposed for testing. static int32_t Encode128B(const ByteString& contents, std::vector<int32_t>* patterns); static int32_t Encode128C(const ByteString& contents, std::vector<int32_t>* patterns); // CBC_OneDimWriter
+ show +
28
29
30
31
32
33
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
34
35
36
37
38
39
40
41
42
43
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; bool SetTextLocation(BC_TEXT_LOC location) override; BC_TYPE GetType() const { return m_codeFormat; } private: const BC_TYPE m_codeFormat; };
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedCode39Writer.h
9
10
11
12
13
14
15
16
17
18
#include "fxbarcode/BC_Library.h" #include "fxbarcode/oned/BC_OneDimWriter.h" class CBC_OnedCode39Writer final : public CBC_OneDimWriter { public: CBC_OnedCode39Writer(); ~CBC_OnedCode39Writer() override; // CBC_OneDimWriter
+ show +
19
20
21
22
23
24
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
25
26
27
28
29
30
31
32
33
34
bool RenderResult(WideStringView contents, uint8_t* code, int32_t codeLength) override; bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; bool SetTextLocation(BC_TEXT_LOC location) override; bool SetWideNarrowRatio(int8_t ratio) override; WideString RenderTextContents(WideStringView contents); bool encodedContents(WideStringView contents, WideString* result);
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN8Writer.h
14
15
16
17
18
19
20
21
22
23
class CFX_DIBitmap; class CFX_RenderDevice; class CBC_OnedEAN8Writer final : public CBC_OneDimEANWriter { public: CBC_OnedEAN8Writer(); ~CBC_OnedEAN8Writer() override; // CBC_OneDimEANWriter:
+ show +
24
25
26
27
28
29
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
30
31
32
33
34
35
36
37
38
39
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; void SetDataLength(int32_t length) override; bool SetTextLocation(BC_TEXT_LOC location) override; int32_t CalcChecksum(const ByteString& contents) override; private: bool ShowChars(WideStringView contents, CFX_RenderDevice* device, const CFX_Matrix* matrix,

[CVE-2023-40093_1.diff] BC_OnedUPCAWriter.h #3
- uint8_t* EncodeWithHint(const ByteString& contents, - BCFORMAT format, - int32_t& outWidth, - int32_t& outHeight, - int32_t hints) override; - uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override; + DataVector<uint8_t> Encode(const ByteString& contents) override;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedUPCAWriter.h
17
18
19
20
21
22
23
24
25
26
class CFX_DIBitmap; class CFX_Matrix; class CFX_RenderDevice; class CBC_OnedUPCAWriter final : public CBC_OneDimEANWriter { public: CBC_OnedUPCAWriter(); ~CBC_OnedUPCAWriter() override; // CBC_OneDimEANWriter:
+ show +
27
28
29
30
31
32
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
33
34
35
36
37
38
39
40
41
42
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; void InitEANWriter() override; int32_t CalcChecksum(const ByteString& contents) override; private: bool ShowChars(WideStringView contents, CFX_RenderDevice* device, const CFX_Matrix* matrix, int32_t barWidth,
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN13Writer.h
13
14
15
16
17
18
19
20
21
22
class CFX_DIBitmap; class CFX_RenderDevice; class CBC_OnedEAN13Writer final : public CBC_OneDimEANWriter { public: CBC_OnedEAN13Writer(); ~CBC_OnedEAN13Writer() override; // CBC_OneDimEANWriter:
+ show +
23
24
25
26
27
28
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
29
30
31
32
33
34
35
36
37
38
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; int32_t CalcChecksum(const ByteString& contents) override; private: bool ShowChars(WideStringView contents, CFX_RenderDevice* device, const CFX_Matrix* matrix, int32_t barWidth, int32_t multiple) override;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedCode128Writer.h
18
19
20
21
22
23
24
25
26
27
explicit CBC_OnedCode128Writer(BC_TYPE type); ~CBC_OnedCode128Writer() override; // Exposed for testing. static int32_t Encode128B(const ByteString& contents, std::vector<int32_t>* patterns); static int32_t Encode128C(const ByteString& contents, std::vector<int32_t>* patterns); // CBC_OneDimWriter
+ show +
28
29
30
31
32
33
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
34
35
36
37
38
39
40
41
42
43
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; bool SetTextLocation(BC_TEXT_LOC location) override; BC_TYPE GetType() const { return m_codeFormat; } private: const BC_TYPE m_codeFormat; };
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedCode39Writer.h
9
10
11
12
13
14
15
16
17
18
#include "fxbarcode/BC_Library.h" #include "fxbarcode/oned/BC_OneDimWriter.h" class CBC_OnedCode39Writer final : public CBC_OneDimWriter { public: CBC_OnedCode39Writer(); ~CBC_OnedCode39Writer() override; // CBC_OneDimWriter
+ show +
19
20
21
22
23
24
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
25
26
27
28
29
30
31
32
33
34
bool RenderResult(WideStringView contents, uint8_t* code, int32_t codeLength) override; bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; bool SetTextLocation(BC_TEXT_LOC location) override; bool SetWideNarrowRatio(int8_t ratio) override; WideString RenderTextContents(WideStringView contents); bool encodedContents(WideStringView contents, WideString* result);
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN8Writer.h
14
15
16
17
18
19
20
21
22
23
class CFX_DIBitmap; class CFX_RenderDevice; class CBC_OnedEAN8Writer final : public CBC_OneDimEANWriter { public: CBC_OnedEAN8Writer(); ~CBC_OnedEAN8Writer() override; // CBC_OneDimEANWriter:
+ show +
24
25
26
27
28
29
uint8_t* EncodeWithHint(const ByteString& contents, BCFORMAT format, int32_t& outWidth, int32_t& outHeight, int32_t hints) override; uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+ show +
30
31
32
33
34
35
36
37
38
39
bool CheckContentValidity(WideStringView contents) override; WideString FilterContents(WideStringView contents) override; void SetDataLength(int32_t length) override; bool SetTextLocation(BC_TEXT_LOC location) override; int32_t CalcChecksum(const ByteString& contents) override; private: bool ShowChars(WideStringView contents, CFX_RenderDevice* device, const CFX_Matrix* matrix,

[CVE-2023-40093_1.diff] BC_OneDimWriter.h #3
- int32_t AppendPattern(uint8_t* target, - int32_t pos, - const int8_t* pattern, - int32_t patternLength, - bool startColor); - - void RenderVerticalBars(int32_t outputX, int32_t width); + pdfium::span<uint8_t> AppendPattern(pdfium::span<uint8_t> target, + pdfium::span<const uint8_t> pattern, + bool startColor);
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OneDimWriter.h
66
67
68
69
70
71
72
73
74
75
TextCharPos* pCharPos, float locX, float locY, int32_t barWidth); void CalcTextInfo(const ByteString& text, TextCharPos* charPos, CFX_Font* cFont, float geWidth, int32_t fontSize, float& charsLen);
+ show +
76
77
78
79
80
81
82
int32_t AppendPattern(uint8_t* target, int32_t pos, const int8_t* pattern, int32_t patternLength, bool startColor); void RenderVerticalBars(int32_t outputX, int32_t width);
+ show +
83
84
85
86
87
88
89
90
91
92
bool m_bPrintChecksum = true; bool m_bCalcChecksum = false; bool m_bLeftPadding = false; bool m_bRightPadding = false; UnownedPtr<CFX_Font> m_pFont; float m_fFontSize = 10.0f; int32_t m_iFontStyle = 0; uint32_t m_fontColor = 0xff000000;

[CVE-2023-40093_1.diff] BC_OnedEAN8Writer_unittest.cpp #2
- int32_t width; - int32_t height; - uint8_t* encoded; - const char* expected; - encoded = writer.Encode("", BCFORMAT_EAN_8, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); + EXPECT_TRUE(writer.Encode("").empty()); + EXPECT_TRUE(writer.Encode("123").empty()); + EXPECT_TRUE(writer.Encode("1234567").empty()); + EXPECT_TRUE(writer.Encode("123456789").empty()); - encoded = writer.Encode("123", BCFORMAT_EAN_8, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("1234567", BCFORMAT_EAN_8, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("123456789", BCFORMAT_EAN_8, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("12345670", BCFORMAT_EAN_8, width, height); - EXPECT_NE(nullptr, encoded); - EXPECT_EQ(1, height); - EXPECT_EQ(67, width); - - expected = + static const char kExpected1[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN8Writer_unittest.cpp
4
5
6
7
8
9
10
11
12
13
#include "fxbarcode/oned/BC_OnedEAN8Writer.h" #include "testing/gtest/include/gtest/gtest.h" namespace { TEST(OnedEAN8WriterTest, Encode) { CBC_OnedEAN8Writer writer; writer.InitEANWriter();
+ show +
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
int32_t width; int32_t height; uint8_t* encoded; const char* expected; // EAN-8 barcodes encode 8-digit numbers into 67 modules in a unidimensional // disposition. encoded = writer.Encode("", BCFORMAT_EAN_8, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("123", BCFORMAT_EAN_8, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("1234567", BCFORMAT_EAN_8, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("123456789", BCFORMAT_EAN_8, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("12345670", BCFORMAT_EAN_8, width, height); EXPECT_NE(nullptr, encoded); EXPECT_EQ(1, height); EXPECT_EQ(67, width); expected =
+ show +
43
44
45
46
47
48
49
50
51
52
"# #" // Start " ## #" // 1 L " # ##" // 2 L " #### #" // 3 L " # ##" // 4 L " # # " // Middle "# ### " // 5 R "# # " // 6 R "# # " // 7 R "### # " // 0 R

[CVE-2023-40093_1.diff] BC_OnedEAN8Writer_unittest.cpp #3
- for (int i = 0; i < 67; i++) { - EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; - } - FX_Free(encoded); + DataVector<uint8_t> encoded = writer.Encode("12345670"); + ASSERT_EQ(strlen(kExpected1), encoded.size()); + for (size_t i = 0; i < strlen(kExpected1); i++) + EXPECT_EQ(kExpected1[i] != ' ', !!encoded[i]) << i; - encoded = writer.Encode("99441104", BCFORMAT_EAN_8, width, height); - EXPECT_NE(nullptr, encoded); - EXPECT_EQ(1, height); - EXPECT_EQ(67, width); - - expected = + static const char kExpected2[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedEAN8Writer_unittest.cpp
44
45
46
47
48
49
50
51
52
53
" ## #" // 1 L " # ##" // 2 L " #### #" // 3 L " # ##" // 4 L " # # " // Middle "# ### " // 5 R "# # " // 6 R "# # " // 7 R "### # " // 0 R "# #"; // End
+ show +
54
55
56
57
58
59
60
61
62
63
64
for (int i = 0; i < 67; i++) { EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; } FX_Free(encoded); encoded = writer.Encode("99441104", BCFORMAT_EAN_8, width, height); EXPECT_NE(nullptr, encoded); EXPECT_EQ(1, height); EXPECT_EQ(67, width); expected =
+ show +
65
66
67
68
69
70
71
72
73
74
"# #" // Start " # ##" // 9 L " # ##" // 9 L " # ##" // 4 L " # ##" // 4 L " # # " // Middle "## ## " // 1 R "## ## " // 1 R "### # " // 0 R "# ### " // 4 R

[CVE-2023-40093_1.diff] BC_OnedCodaBarWriter_unittest.cpp #2
- for (size_t i = 0; i < strlen(expected); i++) { - EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; - } - FX_Free(encoded); + encoded = writer.Encode("-$./:+"); + ASSERT_EQ(strlen(kExpected3), encoded.size()); + for (size_t i = 0; i < strlen(kExpected3); i++) + EXPECT_EQ(kExpected3[i] != ' ', !!encoded[i]) << i; - encoded = writer.Encode("456.987987987/001", BCFORMAT_CODABAR, width, height); - EXPECT_EQ(1, height); - EXPECT_EQ(kModulesForDelimiters + 15 * kModulesPerNumber + - 2 * kModulesPerPunctuation, - width); - expected = + static const char kExpected4[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedCodaBarWriter_unittest.cpp
54
55
56
57
58
59
60
61
62
63
width); expected = "# ## # # " // A Start "# # ## # " // - "# ## # # " // $ "## ## ## # " // . "## ## # ## " // / "## # ## ## " // : "# ## ## ## " // + "# # # ##"; // B End
+ show +
64
65
66
67
68
69
70
71
72
73
74
for (size_t i = 0; i < strlen(expected); i++) { EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; } FX_Free(encoded); encoded = writer.Encode("456.987987987/001", BCFORMAT_CODABAR, width, height); EXPECT_EQ(1, height); EXPECT_EQ(kModulesForDelimiters + 15 * kModulesPerNumber + 2 * kModulesPerPunctuation, width); expected =
+ show +
75
76
77
78
79
80
81
82
83
84
"# ## # # " // A Start "# ## # # " // 4 "## # # # " // 5 "# # # ## " // 6 "## ## ## # " // . "## # # # " // 9 "# ## # # " // 8 "# # ## # " // 7 "## # # # " // 9 "# ## # # " // 8

[CVE-2023-40093_1.diff] BC_OnedUPCAWriter_unittest.cpp #2
- int32_t width; - int32_t height; - uint8_t* encoded = writer.Encode("", BCFORMAT_UPC_A, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); + EXPECT_TRUE(writer.Encode("").empty()); + EXPECT_TRUE(writer.Encode("123").empty()); + EXPECT_TRUE(writer.Encode("12345678901").empty()); + EXPECT_TRUE(writer.Encode("1234567890123").empty()); - encoded = writer.Encode("123", BCFORMAT_UPC_A, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("12345678901", BCFORMAT_UPC_A, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("1234567890123", BCFORMAT_UPC_A, width, height); - EXPECT_EQ(nullptr, encoded); - FX_Free(encoded); - - encoded = writer.Encode("123456789012", BCFORMAT_UPC_A, width, height); - const char* expected = + static const char kExpected1[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp
4
5
6
7
8
9
10
11
12
13
#include "fxbarcode/oned/BC_OnedUPCAWriter.h" #include "testing/gtest/include/gtest/gtest.h" namespace { TEST(OnedUPCAWriterTest, Encode) { CBC_OnedUPCAWriter writer; writer.InitEANWriter();
+ show +
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int32_t width; int32_t height; // UPCA barcodes encode 12-digit numbers into 95 modules in a unidimensional // disposition. uint8_t* encoded = writer.Encode("", BCFORMAT_UPC_A, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("123", BCFORMAT_UPC_A, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("12345678901", BCFORMAT_UPC_A, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("1234567890123", BCFORMAT_UPC_A, width, height); EXPECT_EQ(nullptr, encoded); FX_Free(encoded); encoded = writer.Encode("123456789012", BCFORMAT_UPC_A, width, height); const char* expected =
+ show +
37
38
39
40
41
42
43
44
45
46
"# #" // Start " ## #" // 1 L " # ##" // 2 L " #### #" // 3 L " # ##" // 4 L " ## #" // 5 L " # ####" // 6 L " # # " // Middle "# # " // 7 R "# # " // 8 R

[CVE-2023-40093_1.diff] BC_OnedUPCAWriter_unittest.cpp #3
- EXPECT_NE(nullptr, encoded); - EXPECT_EQ(1, height); - EXPECT_EQ(static_cast<int32_t>(strlen(expected)), width); - for (size_t i = 0; i < strlen(expected); i++) { - EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; - } - FX_Free(encoded); + DataVector<uint8_t> encoded = writer.Encode("123456789012"); + ASSERT_EQ(strlen(kExpected1), encoded.size()); + for (size_t i = 0; i < strlen(kExpected1); i++) + EXPECT_EQ(kExpected1[i] != ' ', !!encoded[i]) << i; - encoded = writer.Encode("777666555440", BCFORMAT_UPC_A, width, height); - expected = + encoded = writer.Encode("777666555440"); + static const char kExpected2[] =
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp
42
43
44
45
46
47
48
49
50
51
" ## #" // 5 L " # ####" // 6 L " # # " // Middle "# # " // 7 R "# # " // 8 R "### # " // 9 R "### # " // 0 R "## ## " // 1 R "## ## " // 2 R "# #"; // End
+ show +
52
53
54
55
56
57
58
59
60
61
EXPECT_NE(nullptr, encoded); EXPECT_EQ(1, height); EXPECT_EQ(static_cast<int32_t>(strlen(expected)), width); for (size_t i = 0; i < strlen(expected); i++) { EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; } FX_Free(encoded); encoded = writer.Encode("777666555440", BCFORMAT_UPC_A, width, height); expected =
+ show +
62
63
64
65
66
67
68
69
70
71
"# #" // Start " ### ##" // 7 L " ### ##" // 7 L " ### ##" // 7 L " # ####" // 6 L " # ####" // 6 L " # ####" // 6 L " # # " // Middle "# ### " // 5 R "# ### " // 5 R

[CVE-2023-40093_1.diff] BC_OnedUPCAWriter_unittest.cpp #4
- EXPECT_NE(nullptr, encoded); - EXPECT_EQ(1, height); - EXPECT_EQ(static_cast<int32_t>(strlen(expected)), width); - for (size_t i = 0; i < strlen(expected); i++) { - EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; - } - FX_Free(encoded); + ASSERT_EQ(strlen(kExpected2), encoded.size()); + for (size_t i = 0; i < strlen(kExpected2); i++) + EXPECT_EQ(kExpected2[i] != ' ', !!encoded[i]) << i;
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp
42
43
44
45
46
47
48
49
50
51
" ## #" // 5 L " # ####" // 6 L " # # " // Middle "# # " // 7 R "# # " // 8 R "### # " // 9 R "### # " // 0 R "## ## " // 1 R "## ## " // 2 R "# #"; // End
+ show +
52
53
54
55
56
57
58
EXPECT_NE(nullptr, encoded); EXPECT_EQ(1, height); EXPECT_EQ(static_cast<int32_t>(strlen(expected)), width); for (size_t i = 0; i < strlen(expected); i++) { EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; } FX_Free(encoded);
+ show +
59
60
61
62
63
64
65
66
67
68
encoded = writer.Encode("777666555440", BCFORMAT_UPC_A, width, height); expected = "# #" // Start " ### ##" // 7 L " ### ##" // 7 L " ### ##" // 7 L " # ####" // 6 L " # ####" // 6 L " # ####" // 6 L
/media/esteban/ACOS/dotOS/external/pdfium/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp
67
68
69
70
71
72
73
74
75
76
" # ####" // 6 L " # ####" // 6 L " # # " // Middle "# ### " // 5 R "# ### " // 5 R "# ### " // 5 R "# ### " // 4 R "# ### " // 4 R "### # " // 0 R "# #"; // End
+ show +
77
78
79
80
81
82
83
EXPECT_NE(nullptr, encoded); EXPECT_EQ(1, height); EXPECT_EQ(static_cast<int32_t>(strlen(expected)), width); for (size_t i = 0; i < strlen(expected); i++) { EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i; } FX_Free(encoded);
+ show +
84
85
86
87
88
89
90
91
92
93
} TEST(OnedUPCAWriterTest, Checksum) { CBC_OnedUPCAWriter writer; writer.InitEANWriter(); EXPECT_EQ(0, writer.CalcChecksum("")); EXPECT_EQ(6, writer.CalcChecksum("123")); EXPECT_EQ(2, writer.CalcChecksum("12345678901")); EXPECT_EQ(0, writer.CalcChecksum("77766655544")); }

[CVE-2023-40093_1.diff] pdfium_test.cc #16
+#ifdef PDF_ENABLE_XFA +FPDF_BOOL ExamplePopupMenu(FPDF_FORMFILLINFO* pInfo, + FPDF_PAGE page, + FPDF_WIDGET always_null, + int flags, + float x, + float y) { + printf("Popup: x=%2.1f, y=%2.1f, flags=0x%x\n", x, y, flags); + return true; +} +#endif // PDF_ENABLE_XFA + +void ExampleNamedAction(FPDF_FORMFILLINFO* pInfo, FPDF_BYTESTRING name) { + printf("Execute named action: %s\n", name); +} + -// |arg| is expected to be "--key=value", and |key| is "--key=". -bool ParseSwitchKeyValue(const std::string& arg, - const std::string& key, - std::string* value) { - if (arg.size() <= key.size() || arg.compare(0, key.size(), key) != 0) - return false; - - *value = arg.substr(key.size()); - return true; -} -
/media/esteban/ACOS/dotOS/external/pdfium/samples/pdfium_test.cc
366
367
368
369
370
371
372
373
374
375
feature = "Screen"; break; case FPDF_UNSP_ANNOT_SIG: feature = "Digital_Signature"; break; } printf("Unsupported feature: %s.\n", feature.c_str()); } // |arg| is expected to be "--key=value", and |key| is "--key=".
+ show +
376
377
378
379
380
381
382
383
bool ParseSwitchKeyValue(const std::string& arg, const std::string& key, std::string* value) { if (arg.size() <= key.size() || arg.compare(0, key.size(), key) != 0) return false; *value = arg.substr(key.size()); return true;
+ show +
384
385
386
387
388
389
390
391
392
393
} bool ParseCommandLine(const std::vector<std::string>& args, Options* options, std::vector<std::string>* files) { if (args.empty()) return false; options->exe_path = args[0]; size_t cur_idx = 1;

[CVE-2023-40093_1.diff] pdfium_test_write_helper.cc #14
-std::string WriteSkp(const char* pdf_name, - int num, - SkPictureRecorder* recorder) { - char filename[256]; - int chars_formatted = - snprintf(filename, sizeof(filename), "%s.%d.skp", pdf_name, num); - - if (chars_formatted < 0 || - static_cast<size_t>(chars_formatted) >= sizeof(filename)) { - fprintf(stderr, "Filename %s is too long\n", filename); - return ""; +std::string WriteSkp(const char* pdf_name, int num, const SkPicture& picture) { + std::string filename = GeneratePageOutputFilename(pdf_name, num, "skp"); + if (filename.empty()) { + return filename; - - sk_sp<SkPicture> picture(recorder->finishRecordingAsPicture()); - SkFILEWStream wStream(filename); - picture->serialize(&wStream); - return std::string(filename); + SkFILEWStream wStream(filename.c_str()); + picture.serialize(&wStream); + return filename;
/media/esteban/ACOS/dotOS/external/pdfium/samples/pdfium_test_write_helper.cc
508
509
510
511
512
513
514
515
516
517
fprintf(stderr, "Failed to write to %s\n", filename); break; } } fclose(fp); DeleteEnhMetaFile(emf); } #endif // _WIN32 #ifdef PDF_ENABLE_SKIA
+ show +
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
std::string WriteSkp(const char* pdf_name, int num, SkPictureRecorder* recorder) { char filename[256]; int chars_formatted = snprintf(filename, sizeof(filename), "%s.%d.skp", pdf_name, num); if (chars_formatted < 0 || static_cast<size_t>(chars_formatted) >= sizeof(filename)) { fprintf(stderr, "Filename %s is too long\n", filename); return ""; } sk_sp<SkPicture> picture(recorder->finishRecordingAsPicture()); SkFILEWStream wStream(filename); picture->serialize(&wStream); return std::string(filename);
+ show +
535
536
537
538
539
540
541
542
543
544
} #endif enum class ThumbnailDecodeType { kBitmap, kRawStream, kDecodedStream }; bool GetThumbnailFilename(char* name_buf, size_t name_buf_size, const char* pdf_name, int page_num, ThumbnailDecodeType decode_type) {

[CVE-2023-40093_1.diff] pdfium_test_write_helper.cc #15
- length_bytes = FPDFAttachment_GetFile(attachment, nullptr, 0); - std::vector<char> data_buf(length_bytes); - if (length_bytes) { - unsigned long actual_length_bytes = - FPDFAttachment_GetFile(attachment, data_buf.data(), length_bytes); - if (actual_length_bytes != length_bytes) - data_buf.clear(); - } - if (data_buf.empty()) { - fprintf(stderr, "Attachment \"%s\" is empty.\n", attachment_name.c_str()); + if (!FPDFAttachment_GetFile(attachment, nullptr, 0, &length_bytes)) { + fprintf(stderr, "Failed to retrieve attachment \"%s\".\n", + attachment_name.c_str()); - // Write the attachment file. + std::vector<char> data_buf(length_bytes); + if (length_bytes) { + unsigned long actual_length_bytes; + if (!FPDFAttachment_GetFile(attachment, data_buf.data(), length_bytes, + &actual_length_bytes)) { + fprintf(stderr, "Failed to retrieve attachment \"%s\".\n", + attachment_name.c_str()); + continue; + } + } + + // Write the attachment file. Since a PDF document could have 0-byte files + // as attachments, we should allow saving the 0-byte attachments to files.
/media/esteban/ACOS/dotOS/external/pdfium/samples/pdfium_test_write_helper.cc
628
629
630
631
632
633
634
635
636
637
int chars_formatted = snprintf(save_name, sizeof(save_name), "%s.attachment.%s", name.c_str(), attachment_name.c_str()); if (chars_formatted < 0 || static_cast<size_t>(chars_formatted) >= sizeof(save_name)) { fprintf(stderr, "Filename %s is too long.\n", save_name); continue; } // Retrieve the attachment.
+ show +
638
639
640
641
642
643
644
645
646
647
length_bytes = FPDFAttachment_GetFile(attachment, nullptr, 0); std::vector<char> data_buf(length_bytes); if (length_bytes) { unsigned long actual_length_bytes = FPDFAttachment_GetFile(attachment, data_buf.data(), length_bytes); if (actual_length_bytes != length_bytes) data_buf.clear(); } if (data_buf.empty()) { fprintf(stderr, "Attachment \"%s\" is empty.\n", attachment_name.c_str());
+ show +
648
649
650
651
652
653
654
655
656
657
continue; } // Write the attachment file. WriteBufferToFile(data_buf.data(), length_bytes, save_name, "attachment"); } } void WriteImages(FPDF_PAGE page, const char* pdf_name, int page_num) { for (int i = 0; i < FPDFPage_CountObjects(page); ++i) {

[CVE-2023-40093_1.diff] pdfium_test_write_helper.cc #17
- char filename[256]; - int chars_formatted = snprintf(filename, sizeof(filename), "%s.%d.%d.png", - pdf_name, page_num, i); - if (chars_formatted < 0 || - static_cast<size_t>(chars_formatted) >= sizeof(filename)) { - fprintf(stderr, "Filename %s for saving image is too long.\n", filename); + std::string filename = + GenerateImageOutputFilename(pdf_name, page_num, i, "png"); + if (filename.empty()) {
/media/esteban/ACOS/dotOS/external/pdfium/samples/pdfium_test_write_helper.cc
659
660
661
662
663
664
665
666
667
668
if (FPDFPageObj_GetType(obj) != FPDF_PAGEOBJ_IMAGE) continue; ScopedFPDFBitmap bitmap(FPDFImageObj_GetBitmap(obj)); if (!bitmap) { fprintf(stderr, "Image object #%d on page #%d has an empty bitmap.\n", i + 1, page_num + 1); continue; }
+ show +
669
670
671
672
673
674
char filename[256]; int chars_formatted = snprintf(filename, sizeof(filename), "%s.%d.%d.png", pdf_name, page_num, i); if (chars_formatted < 0 || static_cast<size_t>(chars_formatted) >= sizeof(filename)) { fprintf(stderr, "Filename %s for saving image is too long.\n", filename);
+ show +
675
676
677
678
679
680
681
682
683
684
continue; } std::vector<uint8_t> png_encoding = EncodeBitmapToPng(std::move(bitmap)); if (png_encoding.empty()) { fprintf(stderr, "Failed to convert image object #%d, on page #%d to png.\n", i + 1, page_num + 1); continue; }

[CVE-2023-40093_1.diff] fpdf_edit.h #4
+// See FPDF_SetPrintMode() for descriptions. +#define FPDF_PRINTMODE_EMF_IMAGE_MASKS 6 +#define FPDF_PRINTMODE_POSTSCRIPT3_TYPE42 7 +#define FPDF_PRINTMODE_POSTSCRIPT3_TYPE42_PASSTHROUGH 8 +// Experimental API. +// Get the transform matrix of a page object. +// +// page_object - handle to a page object. +// matrix - pointer to struct to receive the matrix value. +// +// The matrix is composed as: +// |a c e| +// |b d f| +// and used to scale, rotate, shear and translate the page object. +// +// Returns TRUE on success. +FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV +FPDFPageObj_GetMatrix(FPDF_PAGEOBJECT page_object, FS_MATRIX* matrix); + +// Experimental API. +// Set the transform matrix of a page object. +// +// page_object - handle to a page object. +// matrix - pointer to struct with the matrix value. +// +// The matrix is composed as: +// |a c e| +// |b d f| +// and can be used to scale, rotate, shear and translate the page object. +// +// Returns TRUE on success. +FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV +FPDFPageObj_SetMatrix(FPDF_PAGEOBJECT path, const FS_MATRIX* matrix); + -// Experimental API. -// Get the transform matrix of an image object. +// TODO(thestig): Start deprecating this once FPDFPageObj_SetMatrix() is stable. -// image_object - handle to an image object. -// a - matrix value. -// b - matrix value. -// c - matrix value. -// d - matrix value. -// e - matrix value. -// f - matrix value. -// -// The matrix is composed as: -// |a c e| -// |b d f| -// and used to scale, rotate, shear and translate the image. -// -// Returns TRUE on success. -FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV -FPDFImageObj_GetMatrix(FPDF_PAGEOBJECT image_object, - double* a, - double* b, - double* c, - double* d, - double* e, - double* f); -
/media/esteban/ACOS/dotOS/external/pdfium/public/fpdf_edit.h
566
567
568
569
570
571
572
573
574
575
// d - matrix value. // e - matrix value. // f - matrix value. // // The matrix is composed as: // |a c e| // |b d f| // and used to scale, rotate, shear and translate the image. // // Returns TRUE on success.
+ show +
576
577
578
579
580
581
582
583
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFImageObj_GetMatrix(FPDF_PAGEOBJECT image_object, double* a, double* b, double* c, double* d, double* e, double* f);
+ show +
584
585
586
587
588
589
590
591
592
593
// Set the transform matrix of |image_object|. // // image_object - handle to an image object. // a - matrix value. // b - matrix value. // c - matrix value. // d - matrix value. // e - matrix value. // f - matrix value.

[CVE-2023-40093_1.diff] fpdf_edit.h #17
-// Experimental API. -// Get the transform matrix of a path. -// -// path - handle to a path. -// matrix - pointer to struct to receive the matrix value. -// -// The matrix is composed as: -// |a c e| -// |b d f| -// and used to scale, rotate, shear and translate the path. -// -// Returns TRUE on success. -FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetMatrix(FPDF_PAGEOBJECT path, - FS_MATRIX* matrix); - -// Experimental API. -// Set the transform matrix of a path. -// -// path - handle to a path. -// matrix - pointer to struct with the matrix value. -// -// The matrix is composed as: -// |a c e| -// |b d f| -// and can be used to scale, rotate, shear and translate the path. -// -// Returns TRUE on success. -FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetMatrix(FPDF_PAGEOBJECT path, - const FS_MATRIX* matrix); -
/media/esteban/ACOS/dotOS/external/pdfium/public/fpdf_edit.h
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
// // path - handle to a path. // matrix - pointer to struct to receive the matrix value. // // The matrix is composed as: // |a c e| // |b d f| // and used to scale, rotate, shear and translate the path. // // Returns TRUE on success.
+ show +
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetMatrix(FPDF_PAGEOBJECT path, FS_MATRIX* matrix); // Experimental API. // Set the transform matrix of a path. // // path - handle to a path. // matrix - pointer to struct with the matrix value. // // The matrix is composed as: // |a c e| // |b d f| // and can be used to scale, rotate, shear and translate the path. // // Returns TRUE on success. FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetMatrix(FPDF_PAGEOBJECT path, const FS_MATRIX* matrix);
+ show +
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
// Create a new text object using one of the standard PDF fonts. // // document - handle to the document. // font - string containing the font name, without spaces. // font_size - the font size for the new text object. // // Returns a handle to a new text object, or NULL on failure FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPageObj_NewTextObj(FPDF_DOCUMENT document,

[CVE-2023-40093_1.diff] fpdf_edit.h #22
-// Experimental API. -// Get the font name of a text object. -// -// text - the handle to the text object. -// buffer - the address of a buffer that receives the font name. -// length - the size, in bytes, of |buffer|. -// -// Returns the number of bytes in the font name (including the trailing NUL -// character) on success, 0 on error. -// -// Regardless of the platform, the |buffer| is always in UTF-8 encoding. -// If |length| is less than the returned length, or |buffer| is NULL, |buffer| -// will not be modified. -FPDF_EXPORT unsigned long FPDF_CALLCONV -FPDFTextObj_GetFontName(FPDF_PAGEOBJECT text, - void* buffer, - unsigned long length); - -// Experimental API.
/media/esteban/ACOS/dotOS/external/pdfium/public/fpdf_edit.h
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
// text - the handle to the text object. // buffer - the address of a buffer that receives the font name. // length - the size, in bytes, of |buffer|. // // Returns the number of bytes in the font name (including the trailing NUL // character) on success, 0 on error. // // Regardless of the platform, the |buffer| is always in UTF-8 encoding. // If |length| is less than the returned length, or |buffer| is NULL, |buffer| // will not be modified.
+ show +
1166
1167
1168
1169
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFTextObj_GetFontName(FPDF_PAGEOBJECT text, void* buffer, unsigned long length);
+ show +
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
// Experimental API. // Get the text of a text object. // // text_object - the handle to the text object. // text_page - the handle to the text page. // buffer - the address of a buffer that receives the text. // length - the size, in bytes, of |buffer|. // // Returns the number of bytes in the text (including the trailing NUL

[CVE-2023-40093_1.diff] fpdf_doc.h #3
+// Go to a destination in an embedded file. +#define PDFACTION_EMBEDDEDGOTO 5 -typedef struct _FS_QUADPOINTSF { - FS_FLOAT x1; - FS_FLOAT y1; - FS_FLOAT x2; - FS_FLOAT y2; - FS_FLOAT x3; - FS_FLOAT y3; - FS_FLOAT x4; - FS_FLOAT y4; -} FS_QUADPOINTSF; +// The file identifier entry type. See section 14.4 "File Identifiers" of the +// ISO 32000-1:2008 spec. +typedef enum { + FILEIDTYPE_PERMANENT = 0, + FILEIDTYPE_CHANGING = 1 +} FPDF_FILEIDTYPE;
/media/esteban/ACOS/dotOS/external/pdfium/public/fpdf_doc.h
29
30
31
32
33
34
35
36
37
38
#define PDFDEST_VIEW_UNKNOWN_MODE 0 #define PDFDEST_VIEW_XYZ 1 #define PDFDEST_VIEW_FIT 2 #define PDFDEST_VIEW_FITH 3 #define PDFDEST_VIEW_FITV 4 #define PDFDEST_VIEW_FITR 5 #define PDFDEST_VIEW_FITB 6 #define PDFDEST_VIEW_FITBH 7 #define PDFDEST_VIEW_FITBV 8
+ show +
39
40
41
42
43
44
45
46
47
48
typedef struct _FS_QUADPOINTSF { FS_FLOAT x1; FS_FLOAT y1; FS_FLOAT x2; FS_FLOAT y2; FS_FLOAT x3; FS_FLOAT y3; FS_FLOAT x4; FS_FLOAT y4; } FS_QUADPOINTSF;
+ show +
49
50
51
52
53
54
55
56
57
58
// Get the first child of |bookmark|, or the first top-level bookmark item. // // document - handle to the document. // bookmark - handle to the current bookmark. Pass NULL for the first top // level item. // // Returns a handle to the first child of |bookmark| or the first top-level // bookmark item. NULL if no child or top-level bookmark found. FPDF_EXPORT FPDF_BOOKMARK FPDF_CALLCONV

[CVE-2023-40093_1.diff] fpdfview.h #9
+ + // Version 3 - Experimental. + + // Pointer to the V8::Platform to use. + void* m_pPlatform; + + // Version 4 - Experimental. + + // Explicit specification of core renderer to use. |m_RendererType| must be + // a valid value for |FPDF_LIBRARY_CONFIG| versions of this level or higher, + // or else the initialization will fail with an immediate crash. + // Note that use of a specified |FPDF_RENDERER_TYPE| value for which the + // corresponding render library is not included in the build will similarly + // fail with an immediate crash. + FPDF_RENDERER_TYPE m_RendererType; + -#if defined(PDFIUM_PRINT_TEXT_WITH_GDI) -// Pointer to a helper function to make |font| with |text| of |text_length| -// accessible when printing text with GDI. This is useful in sandboxed -// environments where PDFium's access to GDI may be restricted. -typedef void (*PDFiumEnsureTypefaceCharactersAccessible)(const LOGFONT* font, - const wchar_t* text, - size_t text_length); - -// Function: FPDF_SetTypefaceAccessibleFunc -// Set the function pointer that makes GDI fonts available in sandboxed -// environments. Experimental API. -// Parameters: -// func - A function pointer. See description above. -// Return value: -// None. -FPDF_EXPORT void FPDF_CALLCONV -FPDF_SetTypefaceAccessibleFunc(PDFiumEnsureTypefaceCharactersAccessible func); - -// Function: FPDF_SetPrintTextWithGDI -// Set whether to use GDI to draw fonts when printing on Windows. -// Experimental API. -// Parameters: -// use_gdi - Set to true to enable printing text with GDI. -// Return value: -// None. -FPDF_EXPORT void FPDF_CALLCONV FPDF_SetPrintTextWithGDI(FPDF_BOOL use_gdi); -#endif // PDFIUM_PRINT_TEXT_WITH_GDI - +// Experimental API. -// Experimental API.
/media/esteban/ACOS/dotOS/external/pdfium/public/fpdfview.h
275
276
277
278
279
280
281
282
283
284
// Parameters: // policy - The specified policy for setting, for example: // FPDF_POLICY_MACHINETIME_ACCESS. // enable - True to enable, false to disable the policy. // Return value: // None. FPDF_EXPORT void FPDF_CALLCONV FPDF_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enable); #if defined(_WIN32)
+ show +
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
#if defined(PDFIUM_PRINT_TEXT_WITH_GDI) // Pointer to a helper function to make |font| with |text| of |text_length| // accessible when printing text with GDI. This is useful in sandboxed // environments where PDFium's access to GDI may be restricted. typedef void (*PDFiumEnsureTypefaceCharactersAccessible)(const LOGFONT* font, const wchar_t* text, size_t text_length); // Function: FPDF_SetTypefaceAccessibleFunc // Set the function pointer that makes GDI fonts available in sandboxed // environments. Experimental API. // Parameters: // func - A function pointer. See description above. // Return value: // None. FPDF_EXPORT void FPDF_CALLCONV FPDF_SetTypefaceAccessibleFunc(PDFiumEnsureTypefaceCharactersAccessible func); // Function: FPDF_SetPrintTextWithGDI // Set whether to use GDI to draw fonts when printing on Windows. // Experimental API. // Parameters: // use_gdi - Set to true to enable printing text with GDI. // Return value: // None. FPDF_EXPORT void FPDF_CALLCONV FPDF_SetPrintTextWithGDI(FPDF_BOOL use_gdi); #endif // PDFIUM_PRINT_TEXT_WITH_GDI
+ show +
312
313
314
315
316
317
318
319
320
321
// Function: FPDF_SetPrintMode // Set printing mode when printing on Windows. // Experimental API. // Parameters: // mode - FPDF_PRINTMODE_EMF to output EMF (default) // FPDF_PRINTMODE_TEXTONLY to output text only (for charstream // devices) // FPDF_PRINTMODE_POSTSCRIPT2 to output level 2 PostScript into // EMF as a series of GDI comments.

[CVE-2023-40093_1.diff] BUILD.gn #4
- defines = [] - - if (is_component_build) { - defines += [ "SKIA_IMPLEMENTATION=1" ] - } + # Turn on SK_API to export Skia's public API + defines = [ + "IS_SKIA_IMPL=1", + "SKIA_IMPLEMENTATION=1", + ]
/media/esteban/ACOS/dotOS/external/pdfium/skia/BUILD.gn
57
58
59
60
61
62
63
64
65
66
defines += [ "SK_BUILD_FOR_MAC" ] } if (is_win) { defines += [ "GR_GL_FUNCTION_TYPE=__stdcall" ] } } # Internal-facing config for Skia library code. config("skia_library_config") {
+ show +
67
68
69
70
71
defines = [] if (is_component_build) { defines += [ "SKIA_IMPLEMENTATION=1" ] }
+ show +
72
73
74
75
76
77
78
79
80
81
if (current_cpu == "arm") { if (arm_use_neon) { defines += [ "SK_ARM_HAS_NEON" ] } else if (arm_optionally_use_neon) { defines += [ "SK_ARM_HAS_OPTIONAL_NEON" ] } } # Settings for text blitting, chosen to approximate the system browser.

[CVE-2023-40093_1.diff] BUILD.gn #10
- libs = [ "ImageIO.framework" ] - set_sources_assignment_filter([]) - sources += [ - "//third_party/skia/src/ports/SkFontHost_mac.cpp", - "//third_party/skia/src/utils/mac/SkCreateCGImageRef.cpp", - "//third_party/skia/src/utils/mac/SkStream_mac.cpp", - ] - set_sources_assignment_filter(sources_assignment_filter) + frameworks += [ "ImageIO.framework" ]
/media/esteban/ACOS/dotOS/external/pdfium/skia/BUILD.gn
323
324
325
326
327
328
329
330
331
332
"//third_party/freetype-android:freetype", ] } if (is_android && !is_debug) { configs -= [ "//build/config/compiler:default_optimization" ] configs += [ "//build/config/compiler:optimize_max" ] } if (is_ios) {
+ show +
333
334
335
336
337
338
339
340
libs = [ "ImageIO.framework" ] set_sources_assignment_filter([]) sources += [ "//third_party/skia/src/ports/SkFontHost_mac.cpp", "//third_party/skia/src/utils/mac/SkCreateCGImageRef.cpp", "//third_party/skia/src/utils/mac/SkStream_mac.cpp", ] set_sources_assignment_filter(sources_assignment_filter)
+ show +
341
342
343
344
345
346
347
348
349
350
} if (skia_support_pdf) { deps += [ "//third_party/sfntly" ] sources += skia_pdf_sources } else { sources += [ "//third_party/skia/src/pdf/SkDocument_PDF_None.cpp" ] } }

[CVE-2023-40093_1.diff] BUILD.gn #13
- skia_source_set("skia_opts_sse41") { - sources = skia_opts.sse41_sources - if (!is_win || is_clang) { - cflags = [ "-msse4.1" ] - } - if (is_win) { - defines = [ "SK_CPU_SSE_LEVEL=41" ] - } - visibility = [ ":skia_opts" ] - }
/media/esteban/ACOS/dotOS/external/pdfium/skia/BUILD.gn
397
398
399
400
401
402
403
404
405
406
skia_source_set("skia_opts_sse3") { sources = skia_opts.ssse3_sources if (!is_win || is_clang) { cflags = [ "-mssse3" ] } if (is_win) { defines = [ "SK_CPU_SSE_LEVEL=31" ] } visibility = [ ":skia_opts" ] }
+ show +
407
408
409
410
411
412
413
414
415
416
skia_source_set("skia_opts_sse41") { sources = skia_opts.sse41_sources if (!is_win || is_clang) { cflags = [ "-msse4.1" ] } if (is_win) { defines = [ "SK_CPU_SSE_LEVEL=41" ] } visibility = [ ":skia_opts" ] }
+ show +
417
418
419
420
421
422
423
424
425
426
skia_source_set("skia_opts_sse42") { sources = skia_opts.sse42_sources if (!is_win || is_clang) { cflags = [ "-msse4.2" ] } if (is_win) { defines = [ "SK_CPU_SSE_LEVEL=42" ] } visibility = [ ":skia_opts" ] }

[CVE-2023-40093_1.diff] fake_file_access.cpp #2
- file_access_wrapper_(pdfium::MakeUnique<FileAccessWrapper>(this)), - file_avail_(pdfium::MakeUnique<FileAvailImpl>(this)), - download_hints_(pdfium::MakeUnique<DownloadHintsImpl>(this)) { - ASSERT(file_access_); + file_access_wrapper_(std::make_unique<FileAccessWrapper>(this)), + file_avail_(std::make_unique<FileAvailImpl>(this)), + download_hints_(std::make_unique<DownloadHintsImpl>(this)) { + DCHECK(file_access_); -FakeFileAccess::~FakeFileAccess() {} +FakeFileAccess::~FakeFileAccess() = default;
/media/esteban/ACOS/dotOS/external/pdfium/testing/fake_file_access.cpp
69
70
71
72
73
74
75
76
77
78
} private: UnownedPtr<FakeFileAccess> simulator_; }; } // namespace FakeFileAccess::FakeFileAccess(FPDF_FILEACCESS* file_access) : file_access_(file_access),
+ show +
79
80
81
82
83
84
85
file_access_wrapper_(pdfium::MakeUnique<FileAccessWrapper>(this)), file_avail_(pdfium::MakeUnique<FileAvailImpl>(this)), download_hints_(pdfium::MakeUnique<DownloadHintsImpl>(this)) { ASSERT(file_access_); } FakeFileAccess::~FakeFileAccess() {}
+ show +
86
87
88
89
90
91
92
93
94
95
FPDF_BOOL FakeFileAccess::IsDataAvail(size_t offset, size_t size) const { return available_data_.Contains(RangeSet::Range(offset, offset + size)); } void FakeFileAccess::AddSegment(size_t offset, size_t size) { requested_data_.Union(RangeSet::Range(offset, offset + size)); } unsigned long FakeFileAccess::GetFileSize() {

[CVE-2023-40093_1.diff] embedder_test.cpp #2
+#include "testing/embedder_test_environment.h" -#include "third_party/base/logging.h" -#include "third_party/base/ptr_util.h" -#include "third_party/base/stl_util.h" - -#ifdef PDF_ENABLE_V8 -#include "v8/include/v8-platform.h" -#include "v8/include/v8.h" -#endif // PDF_ENABLE_V8 +#include "third_party/base/check.h" +#include "third_party/base/containers/contains.h" +#include "third_party/base/notreached.h" +#include "third_party/base/numerics/safe_conversions.h"
/media/esteban/ACOS/dotOS/external/pdfium/testing/embedder_test.cpp
18
19
20
21
22
23
24
25
26
27
#include "public/fpdf_dataavail.h" #include "public/fpdf_edit.h" #include "public/fpdf_text.h" #include "public/fpdfview.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/test_loader.h" #include "testing/utils/bitmap_saver.h" #include "testing/utils/file_util.h" #include "testing/utils/hash.h" #include "testing/utils/path_service.h"
+ show +
28
29
30
31
32
33
34
35
#include "third_party/base/logging.h" #include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h" #ifdef PDF_ENABLE_V8 #include "v8/include/v8-platform.h" #include "v8/include/v8.h" #endif // PDF_ENABLE_V8
+ show +
36
37
38
39
40
41
42
43
44
45
namespace { int GetBitmapBytesPerPixel(FPDF_BITMAP bitmap) { return EmbedderTest::BytesPerPixelForFormat(FPDFBitmap_GetFormat(bitmap)); } #if defined(OS_WIN) int CALLBACK GetRecordProc(HDC hdc, HANDLETABLE* handle_table,

[CVE-2023-40093_1.diff] embedder_test.cpp #24
-void EmbedderTest::UnsupportedHandlerTrampoline(UNSUPPORT_INFO* info, - int type) { - EmbedderTest* test = static_cast<EmbedderTest*>(info); - test->delegate_->UnsupportedHandler(type); -} - -// static -int EmbedderTest::AlertTrampoline(IPDF_JSPLATFORM* platform, - FPDF_WIDESTRING message, - FPDF_WIDESTRING title, - int type, - int icon) { - EmbedderTest* test = static_cast<EmbedderTest*>(platform); - return test->delegate_->Alert(message, title, type, icon); -} - -// static -int EmbedderTest::SetTimerTrampoline(FPDF_FORMFILLINFO* info, - int msecs, - TimerCallback fn) { - EmbedderTest* test = static_cast<EmbedderTest*>(info); - return test->delegate_->SetTimer(msecs, fn); -} - -// static -void EmbedderTest::KillTimerTrampoline(FPDF_FORMFILLINFO* info, int id) { - EmbedderTest* test = static_cast<EmbedderTest*>(info); - return test->delegate_->KillTimer(id); -} - -// static -FPDF_PAGE EmbedderTest::GetPageTrampoline(FPDF_FORMFILLINFO* info, - FPDF_DOCUMENT document, - int page_index) { - return static_cast<EmbedderTest*>(info)->delegate_->GetPage(info, document, - page_index); -} - -// static -void EmbedderTest::DoURIActionTrampoline(FPDF_FORMFILLINFO* info, - FPDF_BYTESTRING uri) { - EmbedderTest* test = static_cast<EmbedderTest*>(info); - return test->delegate_->DoURIAction(uri); -} - -// static
/media/esteban/ACOS/dotOS/external/pdfium/testing/embedder_test.cpp
556
557
558
559
560
561
562
563
564
565
FPDF_PAGE EmbedderTest::Delegate::GetPage(FPDF_FORMFILLINFO* info, FPDF_DOCUMENT document, int page_index) { EmbedderTest* test = static_cast<EmbedderTest*>(info); auto it = test->page_map_.find(page_index); return it != test->page_map_.end() ? it->second : nullptr; } // static
+ show +
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
void EmbedderTest::UnsupportedHandlerTrampoline(UNSUPPORT_INFO* info, int type) { EmbedderTest* test = static_cast<EmbedderTest*>(info); test->delegate_->UnsupportedHandler(type); } // static int EmbedderTest::AlertTrampoline(IPDF_JSPLATFORM* platform, FPDF_WIDESTRING message, FPDF_WIDESTRING title, int type, int icon) { EmbedderTest* test = static_cast<EmbedderTest*>(platform); return test->delegate_->Alert(message, title, type, icon); } // static int EmbedderTest::SetTimerTrampoline(FPDF_FORMFILLINFO* info, int msecs, TimerCallback fn) { EmbedderTest* test = static_cast<EmbedderTest*>(info); return test->delegate_->SetTimer(msecs, fn); } // static void EmbedderTest::KillTimerTrampoline(FPDF_FORMFILLINFO* info, int id) { EmbedderTest* test = static_cast<EmbedderTest*>(info); return test->delegate_->KillTimer(id); } // static FPDF_PAGE EmbedderTest::GetPageTrampoline(FPDF_FORMFILLINFO* info, FPDF_DOCUMENT document, int page_index) { return static_cast<EmbedderTest*>(info)->delegate_->GetPage(info, document, page_index); } // static void EmbedderTest::DoURIActionTrampoline(FPDF_FORMFILLINFO* info, FPDF_BYTESTRING uri) { EmbedderTest* test = static_cast<EmbedderTest*>(info); return test->delegate_->DoURIAction(uri);
+ show +
609
610
611
612
613
614
615
616
617
618
} // static std::string EmbedderTest::HashBitmap(FPDF_BITMAP bitmap) { int stride = FPDFBitmap_GetStride(bitmap); int usable_bytes_per_row = GetBitmapBytesPerPixel(bitmap) * FPDFBitmap_GetWidth(bitmap); int height = FPDFBitmap_GetHeight(bitmap); auto span = pdfium::make_span( static_cast<uint8_t*>(FPDFBitmap_GetBuffer(bitmap)), stride * height);

[CVE-2023-40093_1.diff] test.gni #3
+ import("//build/config/android/internal_rules.gni") - "//build/config/android:hide_all_but_jni_onload", - ] - configs += [ - "//build/config:executable_config", + configs += [ "//build/config:executable_config" ]
/media/esteban/ACOS/dotOS/external/pdfium/testing/test.gni
46
47
48
49
50
51
52
53
54
55
data_deps = [] forward_variables_from(invoker, "*", _wrapper_script_vars + [ "extra_dist_files" ]) testonly = true # Thanks to the set_defaults() for test(), configs are initialized with # the default shared_library configs rather than executable configs. configs -= [ "//build/config:shared_library_config",
+ show +
56
57
58
59
"//build/config/android:hide_all_but_jni_onload", ] configs += [ "//build/config:executable_config",
+ show +
60
61
62
63
64
65
66
67
68
69
"//build/config/android:hide_all_but_jni", ] # Don't output to the root or else conflict with the group() below. output_name = rebase_path(_exec_output, root_out_dir) } create_native_executable_dist(_dist_target) { testonly = true dist_dir = "$root_out_dir/$target_name"

[CVE-2023-40093_1.diff] cpdfsdk_customaccess.h #2
+#include "core/fxcrt/retain_ptr.h" - template <typename T, typename... Args> - friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); + CONSTRUCT_VIA_MAKE_RETAIN; - bool ReadBlockAtOffset(void* buffer, - FX_FILESIZE offset, - size_t size) override; + bool ReadBlockAtOffset(pdfium::span<uint8_t> buffer, + FX_FILESIZE offset) override;
/media/esteban/ACOS/dotOS/external/pdfium/testing/invalid_seekable_read_stream.h
3
4
5
6
7
8
9
10
11
12
// found in the LICENSE file. #ifndef TESTING_INVALID_SEEKABLE_READ_STREAM_H_ #define TESTING_INVALID_SEEKABLE_READ_STREAM_H_ #include "core/fxcrt/fx_stream.h" // A stream used for testing where reads always fail. class InvalidSeekableReadStream final : public IFX_SeekableReadStream { public:
+ show +
13
14
15
16
17
18
19
template <typename T, typename... Args> friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); // IFX_SeekableReadStream overrides: bool ReadBlockAtOffset(void* buffer, FX_FILESIZE offset, size_t size) override;
+ show +
20
21
22
23
24
25
26
27
28
29
FX_FILESIZE GetSize() override; private: explicit InvalidSeekableReadStream(FX_FILESIZE data_size); ~InvalidSeekableReadStream() override; const FX_FILESIZE data_size_; }; #endif // TESTING_INVALID_SEEKABLE_READ_STREAM_H_

[CVE-2023-40093_1.diff] invalid_seekable_read_stream.h #2
+#include "core/fxcrt/retain_ptr.h" - template <typename T, typename... Args> - friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); + CONSTRUCT_VIA_MAKE_RETAIN; - bool ReadBlockAtOffset(void* buffer, - FX_FILESIZE offset, - size_t size) override; + bool ReadBlockAtOffset(pdfium::span<uint8_t> buffer, + FX_FILESIZE offset) override;
/media/esteban/ACOS/dotOS/external/pdfium/testing/invalid_seekable_read_stream.h
3
4
5
6
7
8
9
10
11
12
// found in the LICENSE file. #ifndef TESTING_INVALID_SEEKABLE_READ_STREAM_H_ #define TESTING_INVALID_SEEKABLE_READ_STREAM_H_ #include "core/fxcrt/fx_stream.h" // A stream used for testing where reads always fail. class InvalidSeekableReadStream final : public IFX_SeekableReadStream { public:
+ show +
13
14
15
16
17
18
19
template <typename T, typename... Args> friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); // IFX_SeekableReadStream overrides: bool ReadBlockAtOffset(void* buffer, FX_FILESIZE offset, size_t size) override;
+ show +
20
21
22
23
24
25
26
27
28
29
FX_FILESIZE GetSize() override; private: explicit InvalidSeekableReadStream(FX_FILESIZE data_size); ~InvalidSeekableReadStream() override; const FX_FILESIZE data_size_; }; #endif // TESTING_INVALID_SEEKABLE_READ_STREAM_H_

[CVE-2023-40093_1.diff] BUILD.gn #7
+ testonly = true + defines = [] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", - ":fuzzer_config", - ] + configs += [ ":fuzzer_config" ]
/media/esteban/ACOS/dotOS/external/pdfium/testing/fuzzers/BUILD.gn
164
165
166
167
168
169
170
171
172
173
} } else { impl_name = target_name + "_src" } source_set(impl_name) { sources = invoker.sources deps = [] if (defined(invoker.deps)) { deps += invoker.deps }
+ show +
174
175
176
177
178
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":fuzzer_config", ]
+ show +
179
180
181
182
183
184
185
186
187
188
if (is_component_build) { # |export| should be consistent with FPDF_EXPORT In public/fpdfview.h. if (is_win) { export = "__declspec(dllexport)" } else { export = "__attribute__((visibility(\"default\")))" } defines = [ "LLVMFuzzerTestOneInput=${export} ${template_target_name}" ] deps += [ "../../:pdfium_public_headers" ] } else {
/media/esteban/ACOS/dotOS/external/deqp-deps/SPIRV-Tools/test/fuzzers/BUILD.gn
50
51
52
53
54
55
56
57
58
59
sources = invoker.sources deps = [ "../..:spvtools", "../..:spvtools_opt", "../..:spvtools_val", ] if (defined(invoker.deps)) { deps += invoker.deps }
+ show +
60
61
62
63
64
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":fuzzer_config", ]
+ show +
65
66
67
68
69
70
71
72
73
74
} } spvtools_fuzzer("spvtools_as_fuzzer_src") { sources = [ "spvtools_as_fuzzer.cpp", ] } spvtools_fuzzer("spvtools_binary_parser_fuzzer_src") {
/media/esteban/ACOS/dotOS/external/angle/third_party/vulkan-deps/spirv-tools/src/test/fuzzers/BUILD.gn
50
51
52
53
54
55
56
57
58
59
sources = invoker.sources deps = [ "../..:spvtools", "../..:spvtools_opt", "../..:spvtools_val", ] if (defined(invoker.deps)) { deps += invoker.deps }
+ show +
60
61
62
63
64
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":fuzzer_config", ]
+ show +
65
66
67
68
69
70
71
72
73
74
} } spvtools_fuzzer("spvtools_as_fuzzer_src") { sources = [ "spvtools_as_fuzzer.cpp", ] } spvtools_fuzzer("spvtools_binary_parser_fuzzer_src") {
/media/esteban/ACOS/dotOS/external/swiftshader/third_party/SPIRV-Tools/test/fuzzers/BUILD.gn
50
51
52
53
54
55
56
57
58
59
sources = invoker.sources deps = [ "../..:spvtools", "../..:spvtools_opt", "../..:spvtools_val", ] if (defined(invoker.deps)) { deps += invoker.deps }
+ show +
60
61
62
63
64
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":fuzzer_config", ]
+ show +
65
66
67
68
69
70
71
72
73
74
} } spvtools_fuzzer("spvtools_as_fuzzer_src") { sources = [ "spvtools_as_fuzzer.cpp", ] } spvtools_fuzzer("spvtools_binary_parser_fuzzer_src") {

[CVE-2023-40093_1.diff] image_diff_png.cpp #4
+ const uint8_t* pixel_in = rgba; + uint8_t* pixel_out = rgb; - const uint8_t* pixel_in = &rgba[x * 4]; - uint8_t* pixel_out = &rgb[x * 3]; - pixel_out[0] = pixel_in[0]; - pixel_out[1] = pixel_in[1]; - pixel_out[2] = pixel_in[2]; + memcpy(pixel_out, pixel_in, 3); + pixel_in += 4; + pixel_out += 3;
/media/esteban/ACOS/dotOS/external/pdfium/testing/image_diff/image_diff_png.cpp
86
87
88
89
90
91
92
93
94
95
pixel_out[1] = pixel_in[1]; pixel_out[2] = pixel_in[0]; } } void ConvertRGBAtoRGB(const uint8_t* rgba, int pixel_width, uint8_t* rgb, bool* is_opaque) { for (int x = 0; x < pixel_width; x++) {
+ show +
96
97
98
99
100
const uint8_t* pixel_in = &rgba[x * 4]; uint8_t* pixel_out = &rgb[x * 3]; pixel_out[0] = pixel_in[0]; pixel_out[1] = pixel_in[1]; pixel_out[2] = pixel_in[2];
+ show +
101
102
103
104
105
106
107
108
109
110
} } // Decoder // // This code is based on WebKit libpng interface (PNGImageDecoder), which is // in turn based on the Mozilla png decoder. // Gamma constants: We assume we're on Windows which uses a gamma of 2.2. constexpr double kDefaultGamma = 2.2;

[CVE-2023-40093_1.diff] image_diff_png.cpp #5
+ const uint8_t* pixel_in = rgb; + uint8_t* pixel_out = rgba; - const uint8_t* pixel_in = &rgb[x * 3]; - uint8_t* pixel_out = &rgba[x * 4]; - pixel_out[0] = pixel_in[0]; - pixel_out[1] = pixel_in[1]; - pixel_out[2] = pixel_in[2]; + memcpy(pixel_out, pixel_in, 3); + pixel_in += 3; + pixel_out += 4;
/media/esteban/ACOS/dotOS/external/pdfium/testing/image_diff/image_diff_png.cpp
142
143
144
145
146
147
148
149
150
151
// Set to true when we've found the end of the data. bool done = false; }; void ConvertRGBtoRGBA(const uint8_t* rgb, int pixel_width, uint8_t* rgba, bool* is_opaque) { for (int x = 0; x < pixel_width; x++) {
+ show +
152
153
154
155
156
const uint8_t* pixel_in = &rgb[x * 3]; uint8_t* pixel_out = &rgba[x * 4]; pixel_out[0] = pixel_in[0]; pixel_out[1] = pixel_in[1]; pixel_out[2] = pixel_in[2];
+ show +
157
158
159
160
161
162
163
164
165
166
pixel_out[3] = 0xff; } } void ConvertRGBtoBGRA(const uint8_t* rgb, int pixel_width, uint8_t* bgra, bool* is_opaque) { for (int x = 0; x < pixel_width; x++) { const uint8_t* pixel_in = &rgb[x * 3];

[CVE-2023-40093_1.diff] BUILD.gn #2
- if ((is_mac || is_ios) && gtest_include_objc_support) { - if (is_ios) { - set_sources_assignment_filter([]) - } + if (is_apple && gtest_include_objc_support) {
/media/esteban/ACOS/dotOS/external/pdfium/testing/gtest/BUILD.gn
48
49
50
51
52
53
54
55
56
57
sources += [ "../multiprocess_func_list.cc", "../multiprocess_func_list.h", ] } if (gtest_include_platform_test) { sources += [ "../platform_test.h" ] }
+ show +
58
59
60
61
if ((is_mac || is_ios) && gtest_include_objc_support) { if (is_ios) { set_sources_assignment_filter([]) }
+ show +
62
63
64
65
66
67
68
69
70
71
sources += [ "../gtest_mac.h", "../gtest_mac.mm", ] if (gtest_include_platform_test) { sources += [ "../platform_test_mac.mm" ] } set_sources_assignment_filter(sources_assignment_filter) }

[CVE-2023-40093_1.diff] cjs_runtime.cpp #10
- v8::Local<v8::String> str = - v8::String::NewFromUtf8(pIsolate, utf8Name.unterminated_c_str(), - v8::NewStringType::kNormal, utf8Name.GetLength()) - .ToLocalChecked(); + v8::Local<v8::String> str = fxv8::NewStringHelper(pIsolate, utf8Name);
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_runtime.cpp
196
197
198
199
200
201
202
203
204
205
bool CJS_Runtime::SetValueByNameInGlobalObject(ByteStringView utf8Name, v8::Local<v8::Value> pValue) { if (utf8Name.IsEmpty() || pValue.IsEmpty()) return false; v8::Isolate* pIsolate = GetIsolate(); v8::Isolate::Scope isolate_scope(pIsolate); v8::Local<v8::Context> context = GetV8Context(); v8::Context::Scope context_scope(context);
+ show +
206
207
208
209
v8::Local<v8::String> str = v8::String::NewFromUtf8(pIsolate, utf8Name.unterminated_c_str(), v8::NewStringType::kNormal, utf8Name.GetLength()) .ToLocalChecked();
+ show +
210
211
212
213
214
215
216
217
218
219
v8::Maybe<bool> result = context->Global()->Set(context, str, pValue); return result.IsJust() && result.FromJust(); } v8::Local<v8::Value> CJS_Runtime::MaybeCoerceToNumber( v8::Local<v8::Value> value) { bool bAllowNaN = false; if (value->IsString()) { ByteString bstr = ToWideString(value).ToDefANSI(); if (bstr.IsEmpty())

[CVE-2023-40093_1.diff] cjs_event_context_stub.h #2
- CJS_EventContextStub() {} - ~CJS_EventContextStub() override {} + CJS_EventContextStub(); + ~CJS_EventContextStub() override; - Optional<IJS_Runtime::JS_Error> RunScript(const WideString& script) override; + absl::optional<IJS_Runtime::JS_Error> RunScript( + const WideString& script) override; - void OnApp_Init() override {} - void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& strTargetName) override {} - void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} - void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} + void OnDoc_Open(const WideString& strTargetName) override {} + void OnDoc_WillPrint() override {} + void OnDoc_DidPrint() override {} + void OnDoc_WillSave() override {} + void OnDoc_DidSave() override {} + void OnDoc_WillClose() override {} + void OnPage_Open() override {} + void OnPage_Close() override {} + void OnPage_InView() override {} + void OnPage_OutView() override {}
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_event_context_stub.h
4
5
6
7
8
9
10
11
12
13
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef FXJS_CJS_EVENT_CONTEXT_STUB_H_ #define FXJS_CJS_EVENT_CONTEXT_STUB_H_ #include "fxjs/ijs_event_context.h" class CJS_EventContextStub final : public IJS_EventContext { public:
+ show +
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CJS_EventContextStub() {} ~CJS_EventContextStub() override {} // IJS_EventContext: Optional<IJS_Runtime::JS_Error> RunScript(const WideString& script) override; void OnApp_Init() override {} void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv, const WideString& strTargetName) override {} void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {} void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
+ show +
32
33
34
35
36
37
38
39
40
41
void OnField_MouseDown(bool bModifier, bool bShift, CPDF_FormField* pTarget) override {} void OnField_MouseEnter(bool bModifier, bool bShift, CPDF_FormField* pTarget) override {} void OnField_MouseExit(bool bModifier, bool bShift, CPDF_FormField* pTarget) override {} void OnField_MouseUp(bool bModifier,

[CVE-2023-40093_1.diff] cjs_global.h #4
+ static void enumprop_static(const v8::PropertyCallbackInfo<v8::Array>& info); - CJS_Result DelProperty(CJS_Runtime* pRuntime, const wchar_t* propname); - - CJS_Result setPersistent(CJS_Runtime* pRuntime, - const std::vector<v8::Local<v8::Value>>& params); - CJS_Result QueryProperty(const wchar_t* propname); - CJS_Result GetProperty(CJS_Runtime* pRuntime, const wchar_t* propname); - CJS_Result SetProperty(CJS_Runtime* pRuntime, - const wchar_t* propname, - v8::Local<v8::Value> vp); -
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_global.h
33
34
35
36
37
38
39
40
41
42
const v8::PropertyCallbackInfo<v8::Value>& info); static void delprop_static(v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Boolean>& info); static void setPersistent_static( const v8::FunctionCallbackInfo<v8::Value>& info); CJS_Global(v8::Local<v8::Object> pObject, CJS_Runtime* pRuntime); ~CJS_Global() override;
+ show +
43
44
45
46
47
48
49
50
51
CJS_Result DelProperty(CJS_Runtime* pRuntime, const wchar_t* propname); CJS_Result setPersistent(CJS_Runtime* pRuntime, const std::vector<v8::Local<v8::Value>>& params); CJS_Result QueryProperty(const wchar_t* propname); CJS_Result GetProperty(CJS_Runtime* pRuntime, const wchar_t* propname); CJS_Result SetProperty(CJS_Runtime* pRuntime, const wchar_t* propname, v8::Local<v8::Value> vp);
+ show +
52
53
54
55
56
57
58
59
60
61
private: struct JSGlobalData : public CFX_Value { public: JSGlobalData(); ~JSGlobalData(); v8::Global<v8::Object> pData; bool bPersistent = false; bool bDeleted = false;

[CVE-2023-40093_1.diff] cjs_app.cpp #2
+#include <stdint.h> + +#include <algorithm> +#include "core/fxcrt/fixed_zeroed_data_vector.h" +#include "core/fxcrt/stl_util.h" +#include "fpdfsdk/cpdfsdk_formfillenvironment.h" -#include "third_party/base/ptr_util.h" -#include "third_party/base/stl_util.h" +#include "v8/include/v8-container.h" -#define JS_STR_VIEWERTYPE L"pdfium" -#define JS_STR_VIEWERVARIATION L"Full" -#define JS_STR_PLATFORM L"WIN" -#define JS_STR_LANGUAGE L"ENU" -#define JS_NUM_VIEWERVERSION 8 -#define JS_NUM_VIEWERVERSION_XFA 11 -#define JS_NUM_FORMSVERSION 7 +namespace { + +constexpr wchar_t kStrViewerType[] = L"pdfium"; +constexpr wchar_t kStrViewerVariation[] = L"Full"; +constexpr wchar_t kStrPlatform[] = L"WIN"; +constexpr wchar_t kStrLanguage[] = L"ENU"; +constexpr int kNumViewerVersion = 8; +constexpr int kNumViewerVersionXfa = 11; +constexpr int kNumFormsVersion = 7; + +} // namespace
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_app.cpp
7
8
9
10
11
12
13
14
15
16
#include "fxjs/cjs_app.h" #include <utility> #include "fpdfsdk/cpdfsdk_interactiveform.h" #include "fxjs/cjs_document.h" #include "fxjs/cjs_timerobj.h" #include "fxjs/global_timer.h" #include "fxjs/ijs_event_context.h" #include "fxjs/js_resources.h"
+ show +
17
18
19
20
21
22
23
24
25
26
#include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h" #define JS_STR_VIEWERTYPE L"pdfium" #define JS_STR_VIEWERVARIATION L"Full" #define JS_STR_PLATFORM L"WIN" #define JS_STR_LANGUAGE L"ENU" #define JS_NUM_VIEWERVERSION 8 #define JS_NUM_VIEWERVERSION_XFA 11 #define JS_NUM_FORMSVERSION 7
+ show +
27
28
29
30
31
32
33
34
35
36
const JSPropertySpec CJS_App::PropertySpecs[] = { {"activeDocs", get_active_docs_static, set_active_docs_static}, {"calculate", get_calculate_static, set_calculate_static}, {"formsVersion", get_forms_version_static, set_forms_version_static}, {"fs", get_fs_static, set_fs_static}, {"fullscreen", get_fullscreen_static, set_fullscreen_static}, {"language", get_language_static, set_language_static}, {"media", get_media_static, set_media_static}, {"platform", get_platform_static, set_platform_static},

[CVE-2023-40093_1.diff] cjs_field.cpp #6
- const ByteString& string) { - ASSERT(pFormFillEnv); + const ByteString& bsString) { + DCHECK(pFormFillEnv); - BorderStyle nBorderStyle = BorderStyle::SOLID; - if (string == "solid") - nBorderStyle = BorderStyle::SOLID; - else if (string == "beveled") - nBorderStyle = BorderStyle::BEVELED; - else if (string == "dashed") - nBorderStyle = BorderStyle::DASH; - else if (string == "inset") - nBorderStyle = BorderStyle::INSET; - else if (string == "underline") - nBorderStyle = BorderStyle::UNDERLINE; + BorderStyle nBorderStyle = BorderStyle::kSolid; + if (bsString == "solid") + nBorderStyle = BorderStyle::kSolid; + else if (bsString == "beveled") + nBorderStyle = BorderStyle::kBeveled; + else if (bsString == "dashed") + nBorderStyle = BorderStyle::kDash; + else if (bsString == "inset") + nBorderStyle = BorderStyle::kInset; + else if (bsString == "underline") + nBorderStyle = BorderStyle::kUnderline;
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_field.cpp
210
211
212
213
214
215
216
217
218
219
pWidget->SetFlags(dwFlag); return true; } return false; } void SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv, const WideString& swFieldName, int nControlIndex,
+ show +
220
221
222
223
224
225
226
227
228
229
230
231
232
233
const ByteString& string) { ASSERT(pFormFillEnv); BorderStyle nBorderStyle = BorderStyle::SOLID; if (string == "solid") nBorderStyle = BorderStyle::SOLID; else if (string == "beveled") nBorderStyle = BorderStyle::BEVELED; else if (string == "dashed") nBorderStyle = BorderStyle::DASH; else if (string == "inset") nBorderStyle = BorderStyle::INSET; else if (string == "underline") nBorderStyle = BorderStyle::UNDERLINE;
+ show +
234
235
236
237
238
239
240
241
242
243
else return; std::vector<CPDF_FormField*> FieldArray = GetFormFieldsForName(pFormFillEnv, swFieldName); auto* pForm = pFormFillEnv->GetInteractiveForm(); for (CPDF_FormField* pFormField : FieldArray) { if (nControlIndex < 0) { bool bSet = false; for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {

[CVE-2023-40093_1.diff] cjs_field.cpp #50
- int iColorType; - pFormControl->GetBackgroundColor(iColorType); - - CFX_Color color; - if (iColorType == CFX_Color::kTransparent) { - color = CFX_Color(CFX_Color::kTransparent); - } else if (iColorType == CFX_Color::kGray) { - color = CFX_Color(CFX_Color::kGray, - pFormControl->GetOriginalBackgroundColor(0)); - } else if (iColorType == CFX_Color::kRGB) { - color = - CFX_Color(CFX_Color::kRGB, pFormControl->GetOriginalBackgroundColor(0), - pFormControl->GetOriginalBackgroundColor(1), - pFormControl->GetOriginalBackgroundColor(2)); - } else if (iColorType == CFX_Color::kCMYK) { - color = - CFX_Color(CFX_Color::kCMYK, pFormControl->GetOriginalBackgroundColor(0), - pFormControl->GetOriginalBackgroundColor(1), - pFormControl->GetOriginalBackgroundColor(2), - pFormControl->GetOriginalBackgroundColor(3)); - } else { - return CJS_Result::Failure(JSMessage::kValueError); - } - + CFX_Color color = GetFormControlColor(pFormControl, pdfium::appearance::kBG);
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_field.cpp
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
CJS_Result CJS_Field::get_fill_color(CJS_Runtime* pRuntime) { CPDF_FormField* pFormField = GetFirstFormField(); if (!pFormField) return CJS_Result::Failure(JSMessage::kBadObjectError); CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); if (!pFormControl) return CJS_Result::Failure(JSMessage::kBadObjectError);
+ show +
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
int iColorType; pFormControl->GetBackgroundColor(iColorType); CFX_Color color; if (iColorType == CFX_Color::kTransparent) { color = CFX_Color(CFX_Color::kTransparent); } else if (iColorType == CFX_Color::kGray) { color = CFX_Color(CFX_Color::kGray, pFormControl->GetOriginalBackgroundColor(0)); } else if (iColorType == CFX_Color::kRGB) { color = CFX_Color(CFX_Color::kRGB, pFormControl->GetOriginalBackgroundColor(0), pFormControl->GetOriginalBackgroundColor(1), pFormControl->GetOriginalBackgroundColor(2)); } else if (iColorType == CFX_Color::kCMYK) { color = CFX_Color(CFX_Color::kCMYK, pFormControl->GetOriginalBackgroundColor(0), pFormControl->GetOriginalBackgroundColor(1), pFormControl->GetOriginalBackgroundColor(2), pFormControl->GetOriginalBackgroundColor(3)); } else { return CJS_Result::Failure(JSMessage::kValueError);
+ show +
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
} v8::Local<v8::Value> array = CJS_Color::ConvertPWLColorToArray(pRuntime, color); if (array.IsEmpty()) return CJS_Result::Success(pRuntime->NewArray()); return CJS_Result::Success(array); } CJS_Result CJS_Field::set_fill_color(CJS_Runtime* pRuntime,

[CVE-2023-40093_1.diff] cjs_field.cpp #69
- int iColorType; - pFormControl->GetBorderColor(iColorType); - - CFX_Color color; - if (iColorType == CFX_Color::kTransparent) { - color = CFX_Color(CFX_Color::kTransparent); - } else if (iColorType == CFX_Color::kGray) { - color = - CFX_Color(CFX_Color::kGray, pFormControl->GetOriginalBorderColor(0)); - } else if (iColorType == CFX_Color::kRGB) { - color = CFX_Color(CFX_Color::kRGB, pFormControl->GetOriginalBorderColor(0), - pFormControl->GetOriginalBorderColor(1), - pFormControl->GetOriginalBorderColor(2)); - } else if (iColorType == CFX_Color::kCMYK) { - color = CFX_Color(CFX_Color::kCMYK, pFormControl->GetOriginalBorderColor(0), - pFormControl->GetOriginalBorderColor(1), - pFormControl->GetOriginalBorderColor(2), - pFormControl->GetOriginalBorderColor(3)); - } else { - return CJS_Result::Failure(JSMessage::kObjectTypeError); - } - + CFX_Color color = GetFormControlColor(pFormControl, pdfium::appearance::kBC);
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_field.cpp
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
CJS_Result CJS_Field::get_stroke_color(CJS_Runtime* pRuntime) { CPDF_FormField* pFormField = GetFirstFormField(); if (!pFormField) return CJS_Result::Failure(JSMessage::kBadObjectError); CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); if (!pFormControl) return CJS_Result::Failure(JSMessage::kBadObjectError);
+ show +
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
int iColorType; pFormControl->GetBorderColor(iColorType); CFX_Color color; if (iColorType == CFX_Color::kTransparent) { color = CFX_Color(CFX_Color::kTransparent); } else if (iColorType == CFX_Color::kGray) { color = CFX_Color(CFX_Color::kGray, pFormControl->GetOriginalBorderColor(0)); } else if (iColorType == CFX_Color::kRGB) { color = CFX_Color(CFX_Color::kRGB, pFormControl->GetOriginalBorderColor(0), pFormControl->GetOriginalBorderColor(1), pFormControl->GetOriginalBorderColor(2)); } else if (iColorType == CFX_Color::kCMYK) { color = CFX_Color(CFX_Color::kCMYK, pFormControl->GetOriginalBorderColor(0), pFormControl->GetOriginalBorderColor(1), pFormControl->GetOriginalBorderColor(2), pFormControl->GetOriginalBorderColor(3)); } else { return CJS_Result::Failure(JSMessage::kObjectTypeError);
+ show +
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
} v8::Local<v8::Value> array = CJS_Color::ConvertPWLColorToArray(pRuntime, color); if (array.IsEmpty()) return CJS_Result::Success(pRuntime->NewArray()); return CJS_Result::Success(array); } CJS_Result CJS_Field::set_stroke_color(CJS_Runtime* pRuntime,

[CVE-2023-40093_1.diff] cfx_globaldata.h #4
- - void LoadFileBuffer(const wchar_t* sFilePath, - uint8_t*& pBuffer, - int32_t& nLength); - void WriteFileBuffer(const wchar_t* sFilePath, - const char* pBuffer, - int32_t nLength); -
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cfx_globaldata.h
62
63
64
65
66
67
68
69
70
71
explicit CFX_GlobalData(Delegate* pDelegate); ~CFX_GlobalData(); bool LoadGlobalPersistentVariables(); bool LoadGlobalPersistentVariablesFromBuffer(pdfium::span<uint8_t> buffer); bool SaveGlobalPersisitentVariables(); iterator FindGlobalVariable(const ByteString& sPropname);
+ show +
72
73
74
75
76
77
void LoadFileBuffer(const wchar_t* sFilePath, uint8_t*& pBuffer, int32_t& nLength); void WriteFileBuffer(const wchar_t* sFilePath, const char* pBuffer, int32_t nLength);
+ show +
78
79
80
81
82
83
84
size_t m_RefCount = 0; UnownedPtr<Delegate> const m_pDelegate; std::vector<std::unique_ptr<Element>> m_arrayGlobalData; }; #endif // FXJS_CFX_GLOBALDATA_H_

[CVE-2023-40093_1.diff] cjs_globalconsts.cpp #2
-#define GLOBAL_STRING(rt, name, value) \ - (rt)->DefineGlobalConst( \ - (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) { \ - const char* pStr = (value); \ - info.GetReturnValue().Set( \ - v8::String::NewFromUtf8(info.GetIsolate(), pStr, \ - v8::NewStringType::kNormal, strlen(pStr)) \ - .ToLocalChecked()); \ +#include "fxjs/fxv8.h" + +#define GLOBAL_STRING(rt, name, value) \ + (rt)->DefineGlobalConst( \ + (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) { \ + info.GetReturnValue().Set( \ + fxv8::NewStringHelper(info.GetIsolate(), (value))); \
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_globalconsts.cpp
1
2
3
4
5
6
7
8
// Copyright 2017 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "fxjs/cjs_globalconsts.h"
+ show +
9
10
11
12
13
14
15
16
#define GLOBAL_STRING(rt, name, value) \ (rt)->DefineGlobalConst( \ (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) { \ const char* pStr = (value); \ info.GetReturnValue().Set( \ v8::String::NewFromUtf8(info.GetIsolate(), pStr, \ v8::NewStringType::kNormal, strlen(pStr)) \ .ToLocalChecked()); \
+ show +
17
18
19
20
21
22
23
24
25
26
}) // static void CJS_GlobalConsts::DefineJSObjects(CJS_Runtime* pRuntime) { GLOBAL_STRING(pRuntime, L"IDS_GREATER_THAN", "Invalid value: must be greater than or equal to % s."); GLOBAL_STRING(pRuntime, L"IDS_GT_AND_LT", "Invalid value: must be greater than or equal to % s " "and less than or equal to % s.");

[CVE-2023-40093_1.diff] cjs_globalarrays.cpp #2
-#define GLOBAL_ARRAY(rt, name, ...) \ - { \ - static const wchar_t* const values[] = {__VA_ARGS__}; \ - v8::Local<v8::Array> array = (rt)->NewArray(); \ - v8::Local<v8::Context> ctx = (rt)->GetIsolate()->GetCurrentContext(); \ - for (size_t i = 0; i < FX_ArraySize(values); ++i) \ - array->Set(ctx, i, (rt)->NewString(values[i])).FromJust(); \ - (rt)->SetConstArray((name), array); \ - (rt)->DefineGlobalConst( \ - (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) { \ - CJS_Object* pObj = CFXJS_Engine::GetObjectPrivate(info.Holder()); \ - CJS_Runtime* pCurrentRuntime = pObj->GetRuntime(); \ - if (pCurrentRuntime) \ - info.GetReturnValue().Set(pCurrentRuntime->GetConstArray(name)); \ - }); \ +#include <iterator> + +#include "third_party/base/numerics/safe_conversions.h" +#include "v8/include/v8-container.h" +#include "v8/include/v8-isolate.h" + +#define GLOBAL_ARRAY(rt, name, ...) \ + { \ + static const wchar_t* const values[] = {__VA_ARGS__}; \ + v8::Local<v8::Array> array = (rt)->NewArray(); \ + v8::Local<v8::Context> ctx = (rt)->GetIsolate()->GetCurrentContext(); \ + for (size_t i = 0; i < std::size(values); ++i) { \ + array \ + ->Set(ctx, pdfium::base::checked_cast<uint32_t>(i), \ + (rt)->NewString(values[i])) \ + .FromJust(); \ + } \ + (rt)->SetConstArray((name), array); \ + (rt)->DefineGlobalConst( \ + (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) { \ + CJS_Object* pObj = CFXJS_Engine::GetObjectPrivate(info.GetIsolate(), \ + info.Holder()); \ + CJS_Runtime* pCurrentRuntime = pObj->GetRuntime(); \ + if (pCurrentRuntime) \ + info.GetReturnValue().Set(pCurrentRuntime->GetConstArray(name)); \ + }); \
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/cjs_globalarrays.cpp
1
2
3
4
5
6
7
8
// Copyright 2017 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "fxjs/cjs_globalarrays.h"
+ show +
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define GLOBAL_ARRAY(rt, name, ...) \ { \ static const wchar_t* const values[] = {__VA_ARGS__}; \ v8::Local<v8::Array> array = (rt)->NewArray(); \ v8::Local<v8::Context> ctx = (rt)->GetIsolate()->GetCurrentContext(); \ for (size_t i = 0; i < FX_ArraySize(values); ++i) \ array->Set(ctx, i, (rt)->NewString(values[i])).FromJust(); \ (rt)->SetConstArray((name), array); \ (rt)->DefineGlobalConst( \ (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) { \ CJS_Object* pObj = CFXJS_Engine::GetObjectPrivate(info.Holder()); \ CJS_Runtime* pCurrentRuntime = pObj->GetRuntime(); \ if (pCurrentRuntime) \ info.GetReturnValue().Set(pCurrentRuntime->GetConstArray(name)); \ }); \
+ show +
24
25
26
27
28
29
30
31
32
33
} // static void CJS_GlobalArrays::DefineJSObjects(CJS_Runtime* pRuntime) { GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_ENTRY_DOT_SEP", L"[+-]?\\d*\\.?\\d*"); GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_COMMIT_DOT_SEP", L"[+-]?\\d+(\\.\\d+)?", // -1.0 or -1 L"[+-]?\\.\\d+", // -.1 L"[+-]?\\d+\\."); // -1.

[CVE-2023-40093_1.diff] cfxjse_formcalc_context.cpp #50
- int32_t iNums = - (int32_t)((log10((float)(nPayment / nPrincipalAmount)) - - log10((float)(nPayment / nPrincipalAmount - nRateOfMonth))) / - log10((float)(1 + nRateOfMonth))); - int32_t iEnd = std::min((int32_t)(nFirstMonth + nNumberOfMonths - 1), iNums); + int32_t iNums = static_cast<int32_t>( + (log10((float)(nPayment / nPrincipalAmount)) - + log10((float)(nPayment / nPrincipalAmount - nRateOfMonth))) / + log10((float)(1 + nRateOfMonth))); + int32_t iEnd = + std::min(static_cast<int32_t>(nFirstMonth + nNumberOfMonths - 1), iNums);
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/xfa/cfxjse_formcalc_context.cpp
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
float nPayment = ValueToFloat(pThis, argThree.get()); float nFirstMonth = ValueToFloat(pThis, argFour.get()); float nNumberOfMonths = ValueToFloat(pThis, argFive.get()); if ((nPrincipalAmount <= 0) || (nRate <= 0) || (nPayment <= 0) || (nFirstMonth < 0) || (nNumberOfMonths < 0)) { pContext->ThrowArgumentMismatchException(); return; } float nRateOfMonth = nRate / 12;
+ show +
2738
2739
2740
2741
2742
int32_t iNums = (int32_t)((log10((float)(nPayment / nPrincipalAmount)) - log10((float)(nPayment / nPrincipalAmount - nRateOfMonth))) / log10((float)(1 + nRateOfMonth))); int32_t iEnd = std::min((int32_t)(nFirstMonth + nNumberOfMonths - 1), iNums);
+ show +
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
if (nPayment < nPrincipalAmount * nRateOfMonth) { args.GetReturnValue()->SetFloat(0); return; } int32_t i = 0; for (i = 0; i < nFirstMonth - 1; ++i) nPrincipalAmount -= nPayment - nPrincipalAmount * nRateOfMonth;
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/xfa/cfxjse_formcalc_context.cpp
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
float nPayment = ValueToFloat(pThis, argThree.get()); float nFirstMonth = ValueToFloat(pThis, argFour.get()); float nNumberOfMonths = ValueToFloat(pThis, argFive.get()); if ((nPrincipalAmount <= 0) || (nRate <= 0) || (nPayment <= 0) || (nFirstMonth < 0) || (nNumberOfMonths < 0)) { pContext->ThrowArgumentMismatchException(); return; } float nRateOfMonth = nRate / 12;
+ show +
2873
2874
2875
2876
2877
int32_t iNums = (int32_t)((log10((float)(nPayment / nPrincipalAmount)) - log10((float)(nPayment / nPrincipalAmount - nRateOfMonth))) / log10((float)(1 + nRateOfMonth))); int32_t iEnd = std::min((int32_t)(nFirstMonth + nNumberOfMonths - 1), iNums);
+ show +
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
if (nPayment < nPrincipalAmount * nRateOfMonth) { pContext->ThrowArgumentMismatchException(); return; } int32_t i = 0; for (i = 0; i < nFirstMonth - 1; ++i) nPrincipalAmount -= nPayment - nPrincipalAmount * nRateOfMonth; float nTemp = 0;

[CVE-2023-40093_1.diff] cfxjse_class.cpp #5
- if (pClassDescriptor != &GlobalClassDescriptor && - pClassDescriptor != &NormalClassDescriptor && - pClassDescriptor != &VariablesClassDescriptor && - pClassDescriptor != &kFormCalcFM2JSDescriptor) { + if (pClassDescriptor != &kGlobalClassDescriptor && + pClassDescriptor != &kNormalClassDescriptor && + pClassDescriptor != &kVariablesClassDescriptor && + pClassDescriptor != &kFormCalcDescriptor) {
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/xfa/cfxjse_class.cpp
88
89
90
91
92
93
94
95
96
97
} void DynPropGetterAdapter_MethodCallback( const v8::FunctionCallbackInfo<v8::Value>& info) { v8::Local<v8::Object> hCallBackInfo = info.Data().As<v8::Object>(); if (hCallBackInfo->InternalFieldCount() != 2) return; auto* pClassDescriptor = static_cast<const FXJSE_CLASS_DESCRIPTOR*>( hCallBackInfo->GetAlignedPointerFromInternalField(0));
+ show +
98
99
100
101
if (pClassDescriptor != &GlobalClassDescriptor && pClassDescriptor != &NormalClassDescriptor && pClassDescriptor != &VariablesClassDescriptor && pClassDescriptor != &kFormCalcFM2JSDescriptor) {
+ show +
102
103
104
105
106
107
108
109
110
111
return; } v8::Local<v8::String> hPropName = hCallBackInfo->GetInternalField(1).As<v8::String>(); if (hPropName.IsEmpty()) return; v8::String::Utf8Value szPropName(info.GetIsolate(), hPropName); CJS_Result result =

[CVE-2023-40093_1.diff] cjx_tree.h #5
+ protected: + explicit CJX_Tree(CXFA_Object* obj); + - void ResolveNodeList(CFXJSE_Value* pValue, - WideString wsExpression, - uint32_t dwFlag, - CXFA_Node* refNode); + v8::Local<v8::Value> ResolveNodeList(v8::Isolate* pIsolate, + WideString wsExpression, + Mask<XFA_ResolveFlag> dwFlag, + CXFA_Node* refNode);
/media/esteban/ACOS/dotOS/external/pdfium/fxjs/xfa/cjx_tree.h
32
33
34
35
36
37
38
39
40
41
JSE_PROP(parent); JSE_PROP(somExpression); private: using Type__ = CJX_Tree; using ParentType__ = CJX_Object; static const TypeTag static_type__ = TypeTag::Tree; static const CJX_MethodSpec MethodSpecs[];
+ show +
42
43
44
45
void ResolveNodeList(CFXJSE_Value* pValue, WideString wsExpression, uint32_t dwFlag, CXFA_Node* refNode);
+ show +
46
47
48
}; #endif // FXJS_XFA_CJX_TREE_H_

[CVE-2023-40093_1.diff] cxfa_ffwidget.h #7
- UnownedPtr<CXFA_ContentLayoutItem> m_pLayoutItem; - UnownedPtr<CXFA_FFDocView> m_pDocView; - UnownedPtr<CXFA_FFPageView> m_pPageView; - UnownedPtr<CXFA_Node> const m_pNode; - mutable CFX_RectF m_rtWidget; + cppgc::Member<CXFA_ContentLayoutItem> m_pLayoutItem; + cppgc::Member<CXFA_FFDocView> m_pDocView; + cppgc::Member<CXFA_FFPageView> m_pPageView; + cppgc::Member<CXFA_Node> const m_pNode; + mutable CFX_RectF m_WidgetRect;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffwidget.h
185
186
187
188
189
190
191
192
193
194
const CFX_RectF& rtBorder, const CFX_Matrix& matrix, bool forceRound); CFX_RectF GetRectWithoutRotate(); bool HasVisibleStatus() const; void EventKillFocus(); bool IsButtonDown(); void SetButtonDown(bool bSet);
+ show +
195
196
197
198
199
UnownedPtr<CXFA_ContentLayoutItem> m_pLayoutItem; UnownedPtr<CXFA_FFDocView> m_pDocView; UnownedPtr<CXFA_FFPageView> m_pPageView; UnownedPtr<CXFA_Node> const m_pNode; mutable CFX_RectF m_rtWidget;
+ show +
200
201
202
203
204
205
206
}; inline CXFA_FFField* ToField(CXFA_FFWidget* widget) { return widget ? widget->AsField() : nullptr; } #endif // XFA_FXFA_CXFA_FFWIDGET_H_

[CVE-2023-40093_1.diff] cxfa_texttabstopscontext.h #2
- int32_t m_iTabIndex; - bool m_bTabstops; - float m_fTabWidth; - float m_fLeft; + int32_t m_iTabIndex = -1; + bool m_bHasTabstops = false; + float m_fTabWidth = 0.0f; + float m_fLeft = 0.0f;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_texttabstopscontext.h
22
23
24
25
26
27
28
29
30
31
class CXFA_TextTabstopsContext { public: CXFA_TextTabstopsContext(); ~CXFA_TextTabstopsContext(); void Append(uint32_t dwAlign, float fTabstops); void RemoveAll(); void Reset();
+ show +
32
33
34
35
int32_t m_iTabIndex; bool m_bTabstops; float m_fTabWidth; float m_fLeft;
+ show +
36
37
38
39
std::vector<XFA_TABSTOPS> m_tabstops; }; #endif // XFA_FXFA_CXFA_TEXTTABSTOPSCONTEXT_H_

[CVE-2023-40093_1.diff] cxfa_ffcombobox.cpp #9
-bool CXFA_FFComboBox::Undo() { - return m_pNode->IsChoiceListAllowTextEntry() && - ToComboBox(GetNormalWidget())->EditUndo(); -} - -bool CXFA_FFComboBox::Redo() { - return m_pNode->IsChoiceListAllowTextEntry() && - ToComboBox(GetNormalWidget())->EditRedo(); -} -
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffcombobox.cpp
215
216
217
218
219
220
221
222
223
224
bool CXFA_FFComboBox::CanUndo() { return m_pNode->IsChoiceListAllowTextEntry() && ToComboBox(GetNormalWidget())->EditCanUndo(); } bool CXFA_FFComboBox::CanRedo() { return m_pNode->IsChoiceListAllowTextEntry() && ToComboBox(GetNormalWidget())->EditCanRedo(); }
+ show +
225
226
227
228
229
230
231
232
bool CXFA_FFComboBox::Undo() { return m_pNode->IsChoiceListAllowTextEntry() && ToComboBox(GetNormalWidget())->EditUndo(); } bool CXFA_FFComboBox::Redo() { return m_pNode->IsChoiceListAllowTextEntry() && ToComboBox(GetNormalWidget())->EditRedo();
+ show +
233
234
235
236
237
238
239
240
241
242
} bool CXFA_FFComboBox::CanCopy() { return ToComboBox(GetNormalWidget())->EditCanCopy(); } bool CXFA_FFComboBox::CanCut() { return m_pNode->IsOpenAccess() && m_pNode->IsChoiceListAllowTextEntry() && ToComboBox(GetNormalWidget())->EditCanCut(); }

[CVE-2023-40093_1.diff] cxfa_ffapp.cpp #2
-#include <algorithm> -#include <memory> -#include <utility> -#include <vector> - -#include "third_party/base/ptr_util.h" -#include "xfa/fgas/font/cfgas_fontmgr.h"
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffapp.cpp
1
2
3
4
5
6
7
8
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "xfa/fxfa/cxfa_ffapp.h"
+ show +
9
10
11
12
13
14
15
#include <algorithm> #include <memory> #include <utility> #include <vector> #include "third_party/base/ptr_util.h" #include "xfa/fgas/font/cfgas_fontmgr.h"
+ show +
16
17
18
19
20
21
22
23
24
25
#include "xfa/fwl/cfwl_notedriver.h" #include "xfa/fwl/cfwl_widgetmgr.h" #include "xfa/fxfa/cxfa_ffdoc.h" #include "xfa/fxfa/cxfa_ffwidgethandler.h" #include "xfa/fxfa/cxfa_fontmgr.h" #include "xfa/fxfa/cxfa_fwladapterwidgetmgr.h" #include "xfa/fxfa/cxfa_fwltheme.h" namespace {

[CVE-2023-40093_1.diff] cxfa_ffwidget.cpp #16
-bool CXFA_FFWidget::Undo() { - return false; -} - -bool CXFA_FFWidget::Redo() { - return false; -} -
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffwidget.cpp
488
489
490
491
492
493
494
495
496
497
} bool CXFA_FFWidget::CanUndo() { return false; } bool CXFA_FFWidget::CanRedo() { return false; }
+ show +
498
499
500
501
502
503
bool CXFA_FFWidget::Undo() { return false; } bool CXFA_FFWidget::Redo() { return false;
+ show +
504
505
506
507
508
509
510
511
512
513
} bool CXFA_FFWidget::CanCopy() { return false; } bool CXFA_FFWidget::CanCut() { return false; }

[CVE-2023-40093_1.diff] cxfa_ffwidget.cpp #17
-Optional<WideString> CXFA_FFWidget::Copy() { - return {}; +bool CXFA_FFWidget::Undo() { + return false; -Optional<WideString> CXFA_FFWidget::Cut() { - return {}; +bool CXFA_FFWidget::Redo() { + return false; +} + +absl::optional<WideString> CXFA_FFWidget::Copy() { + return absl::nullopt; +} + +absl::optional<WideString> CXFA_FFWidget::Cut() { + return absl::nullopt;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffwidget.cpp
520
521
522
523
524
525
526
527
528
529
} bool CXFA_FFWidget::CanDelete() { return CanCut(); } bool CXFA_FFWidget::CanDeSelect() { return CanCopy(); }
+ show +
530
531
532
533
534
535
Optional<WideString> CXFA_FFWidget::Copy() { return {}; } Optional<WideString> CXFA_FFWidget::Cut() { return {};
+ show +
536
537
538
539
540
541
542
543
544
545
} bool CXFA_FFWidget::Paste(const WideString& wsPaste) { return false; } void CXFA_FFWidget::SelectAll() {} void CXFA_FFWidget::Delete() {}

[CVE-2023-40093_1.diff] cxfa_ffpageview.cpp #3
- int32_t iRotate, - uint32_t dwCoordinatesType) { - ASSERT(iRotate >= 0); - ASSERT(iRotate <= 3); + int32_t iRotate) { + DCHECK(iRotate >= 0); + DCHECK(iRotate <= 3); - bool bFlipX = (dwCoordinatesType & 0x01) != 0; - bool bFlipY = (dwCoordinatesType & 0x02) != 0; - CFX_Matrix m((bFlipX ? -1.0f : 1.0f), 0, 0, (bFlipY ? -1.0f : 1.0f), 0, 0); + CFX_Matrix m;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffpageview.cpp
22
23
24
25
26
27
28
29
30
31
#include "xfa/fxfa/cxfa_ffwidget.h" #include "xfa/fxfa/cxfa_fwladapterwidgetmgr.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_traversal.h" #include "xfa/fxfa/parser/cxfa_traverse.h" namespace { CFX_Matrix GetPageMatrix(const CFX_RectF& docPageRect, const FX_RECT& devicePageRect,
+ show +
32
33
34
35
36
37
38
39
int32_t iRotate, uint32_t dwCoordinatesType) { ASSERT(iRotate >= 0); ASSERT(iRotate <= 3); bool bFlipX = (dwCoordinatesType & 0x01) != 0; bool bFlipY = (dwCoordinatesType & 0x02) != 0; CFX_Matrix m((bFlipX ? -1.0f : 1.0f), 0, 0, (bFlipY ? -1.0f : 1.0f), 0, 0);
+ show +
40
41
42
43
44
45
46
47
48
49
if (iRotate == 0 || iRotate == 2) { m.a *= (float)devicePageRect.Width() / docPageRect.width; m.d *= (float)devicePageRect.Height() / docPageRect.height; } else { m.a *= (float)devicePageRect.Height() / docPageRect.width; m.d *= (float)devicePageRect.Width() / docPageRect.height; } m.Rotate(iRotate * 1.57079632675f); switch (iRotate) { case 0:

[CVE-2023-40093_1.diff] cxfa_ffdocview.h #6
- - bool m_bLayoutEvent = false; - bool m_bInLayoutStatus = false; - std::vector<WideString> m_arrNullTestMsg; - - void ResetLayoutProcessor() { m_pXFADocLayout.Release(); } + void AddNullTestMsg(const WideString& msg); + explicit CXFA_FFDocView(CXFA_FFDoc* pDoc); +
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffdocview.h
90
91
92
93
94
95
96
97
98
99
CXFA_Node* GetFocusNode() const { return m_pFocusNode.Get(); } void SetFocusNode(CXFA_Node* pNode); void DeleteLayoutItem(CXFA_FFWidget* pWidget); XFA_EventError ExecEventActivityByDeepFirst(CXFA_Node* pFormNode, XFA_EVENTTYPE eEventType, bool bIsFormReady, bool bRecursive); void AddBindItem(CXFA_BindItems* item) { m_BindItems.push_back(item); }
+ show +
100
101
102
103
104
bool m_bLayoutEvent = false; bool m_bInLayoutStatus = false; std::vector<WideString> m_arrNullTestMsg; void ResetLayoutProcessor() { m_pXFADocLayout.Release(); }
+ show +
105
106
107
108
109
110
111
112
113
114
private: bool RunEventLayoutReady(); void RunBindItems(); void InitCalculate(CXFA_Node* pNode); void InitLayout(CXFA_Node* pNode); size_t RunCalculateRecursive(size_t index); void ShowNullTestMsg(); bool ResetSingleNodeData(CXFA_Node* pNode); CXFA_Subform* GetRootSubform();

[CVE-2023-40093_1.diff] cxfa_textprovider.cpp #5
- if (m_eType == XFA_TEXTPROVIDERTYPE_Datasets) { - CXFA_Node* pBind = m_pNode->GetBindData(); - CFX_XMLNode* pXMLNode = pBind->GetXMLMappingNode(); - for (CFX_XMLNode* pXMLChild = pXMLNode->GetFirstChild(); pXMLChild; - pXMLChild = pXMLChild->GetNextSibling()) { - CFX_XMLElement* pElement = ToXMLElement(pXMLChild); - if (pElement && XFA_RecognizeRichText(pElement)) { - *bRichText = true; - break; - } - } - return pBind; - } - - if (m_eType == XFA_TEXTPROVIDERTYPE_Caption) { + if (m_eType == Type::kCaption) {
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_textprovider.cpp
49
50
51
52
53
54
55
56
57
58
Optional<WideString> contentType = pChildNode->JSObject()->TryAttribute( XFA_Attribute::ContentType, false); if (contentType.has_value() && contentType.value().EqualsASCII("text/html")) { *bRichText = true; } } return pChildNode; }
+ show +
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
if (m_eType == XFA_TEXTPROVIDERTYPE_Datasets) { CXFA_Node* pBind = m_pNode->GetBindData(); CFX_XMLNode* pXMLNode = pBind->GetXMLMappingNode(); for (CFX_XMLNode* pXMLChild = pXMLNode->GetFirstChild(); pXMLChild; pXMLChild = pXMLChild->GetNextSibling()) { CFX_XMLElement* pElement = ToXMLElement(pXMLChild); if (pElement && XFA_RecognizeRichText(pElement)) { *bRichText = true; break; } } return pBind; } if (m_eType == XFA_TEXTPROVIDERTYPE_Caption) {
+ show +
74
75
76
77
78
79
80
81
82
83
CXFA_Caption* pCaptionNode = m_pNode->GetChild<CXFA_Caption>(0, XFA_Element::Caption, false); if (!pCaptionNode) return nullptr; CXFA_Value* pValueNode = pCaptionNode->GetChild<CXFA_Value>(0, XFA_Element::Value, false); if (!pValueNode) return nullptr;

[CVE-2023-40093_1.diff] fxfa.h #2
-#include <memory> - -#include "core/fxcrt/cfx_timer.h" -#include "core/fxcrt/fx_coordinates.h" -#include "core/fxcrt/retain_ptr.h" -#include "core/fxge/fx_dib.h" -#include "xfa/fxfa/fxfa_basic.h" - -class CXFA_FFDoc; -class CXFA_FFPageView; -class CXFA_FFWidget; -class CXFA_Submit; -class IFX_SeekableReadStream; -class IJS_Runtime; -
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/fxfa.h
1
2
3
4
5
6
7
8
9
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef XFA_FXFA_FXFA_H_ #define XFA_FXFA_FXFA_H_
+ show +
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <memory> #include "core/fxcrt/cfx_timer.h" #include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/retain_ptr.h" #include "core/fxge/fx_dib.h" #include "xfa/fxfa/fxfa_basic.h" class CXFA_FFDoc; class CXFA_FFPageView; class CXFA_FFWidget; class CXFA_Submit; class IFX_SeekableReadStream; class IJS_Runtime;
+ show +
24
25
26
27
28
29
30
31
32
33
// Note, values must match fpdf_formfill.h JSPLATFORM_ALERT_BUTTON_* flags. enum class AlertButton { kDefault = 0, kOK = 0, kOKCancel = 1, kYesNo = 2, kYesNoCancel = 3, };

[CVE-2023-40093_1.diff] fxfa.h #3
-#define XFA_PRINTOPT_ShowDialog 0x00000001 -#define XFA_PRINTOPT_CanCancel 0x00000002 -#define XFA_PRINTOPT_ShrinkPage 0x00000004 -#define XFA_PRINTOPT_AsImage 0x00000008 -#define XFA_PRINTOPT_ReverseOrder 0x00000010 -#define XFA_PRINTOPT_PrintAnnot 0x00000020 - -#define XFA_PAGEVIEWEVENT_PostAdded 1 -#define XFA_PAGEVIEWEVENT_PostRemoved 3 -#define XFA_PAGEVIEWEVENT_StopLayout 4 +enum class XFA_PrintOpt : uint8_t { + kShowDialog = 1 << 0, + kCanCancel = 1 << 1, + kShrinkPage = 1 << 2, + kAsImage = 1 << 3, + kReverseOrder = 1 << 4, + kPrintAnnot = 1 << 5, +};
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/fxfa.h
50
51
52
53
54
55
56
57
58
59
}; // Note, values must match fpdf_formfill.h FORMTYPE_* flags. enum class FormType { kNone = 0, kAcroForm = 1, kXFAFull = 2, kXFAForeground = 3, };
+ show +
60
61
62
63
64
65
66
67
68
69
#define XFA_PRINTOPT_ShowDialog 0x00000001 #define XFA_PRINTOPT_CanCancel 0x00000002 #define XFA_PRINTOPT_ShrinkPage 0x00000004 #define XFA_PRINTOPT_AsImage 0x00000008 #define XFA_PRINTOPT_ReverseOrder 0x00000010 #define XFA_PRINTOPT_PrintAnnot 0x00000020 #define XFA_PAGEVIEWEVENT_PostAdded 1 #define XFA_PAGEVIEWEVENT_PostRemoved 3 #define XFA_PAGEVIEWEVENT_StopLayout 4
+ show +
70
71
72
73
74
75
76
77
78
79
enum class XFA_EventError { kError = -1, kNotExist = 0, kSuccess = 1, kDisabled = 2, }; enum XFA_WidgetStatus { XFA_WidgetStatus_None = 0,

[CVE-2023-40093_1.diff] cxfa_ffdatetimeedit.cpp #9
+bool CXFA_FFDateTimeEdit::CanCopy() { + return GetPickerWidget()->HasSelection(); +} + +bool CXFA_FFDateTimeEdit::CanCut() { + if (GetPickerWidget()->GetStyleExts() & FWL_STYLEEXT_EDT_ReadOnly) + return false; + return GetPickerWidget()->HasSelection(); +} + +bool CXFA_FFDateTimeEdit::CanPaste() { + return !(GetPickerWidget()->GetStyleExts() & FWL_STYLEEXT_EDT_ReadOnly); +} + +bool CXFA_FFDateTimeEdit::CanSelectAll() { + return GetPickerWidget()->GetEditTextLength() > 0; +} + +absl::optional<WideString> CXFA_FFDateTimeEdit::Copy() { + return GetPickerWidget()->Copy(); +} + -bool CXFA_FFDateTimeEdit::CanCopy() { - return GetPickerWidget()->HasSelection(); -} - -bool CXFA_FFDateTimeEdit::CanCut() { - if (GetPickerWidget()->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly) - return false; - return GetPickerWidget()->HasSelection(); -} - -bool CXFA_FFDateTimeEdit::CanPaste() { - return !(GetPickerWidget()->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly); -} - -bool CXFA_FFDateTimeEdit::CanSelectAll() { - return GetPickerWidget()->GetEditTextLength() > 0; -} - -Optional<WideString> CXFA_FFDateTimeEdit::Copy() { - return GetPickerWidget()->Copy(); -} - -Optional<WideString> CXFA_FFDateTimeEdit::Cut() { +absl::optional<WideString> CXFA_FFDateTimeEdit::Cut() {
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffdatetimeedit.cpp
226
227
228
229
230
231
232
233
234
235
} bool CXFA_FFDateTimeEdit::Undo() { return GetPickerWidget()->Undo(); } bool CXFA_FFDateTimeEdit::Redo() { return GetPickerWidget()->Redo(); }
+ show +
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
bool CXFA_FFDateTimeEdit::CanCopy() { return GetPickerWidget()->HasSelection(); } bool CXFA_FFDateTimeEdit::CanCut() { if (GetPickerWidget()->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly) return false; return GetPickerWidget()->HasSelection(); } bool CXFA_FFDateTimeEdit::CanPaste() { return !(GetPickerWidget()->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly); } bool CXFA_FFDateTimeEdit::CanSelectAll() { return GetPickerWidget()->GetEditTextLength() > 0; } Optional<WideString> CXFA_FFDateTimeEdit::Copy() { return GetPickerWidget()->Copy(); } Optional<WideString> CXFA_FFDateTimeEdit::Cut() {
+ show +
259
260
261
262
263
264
265
266
267
268
return GetPickerWidget()->Cut(); } bool CXFA_FFDateTimeEdit::Paste(const WideString& wsPaste) { return GetPickerWidget()->Paste(wsPaste); } void CXFA_FFDateTimeEdit::SelectAll() { GetPickerWidget()->SelectAll(); }

[CVE-2023-40093_1.diff] cxfa_ffdatetimeedit.h #2
-enum XFA_DATETIMETYPE { - XFA_DATETIMETYPE_Date = 0, - XFA_DATETIMETYPE_Time, - XFA_DATETIMETYPE_DateAndTime -}; -
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffdatetimeedit.h
3
4
5
6
7
8
9
10
11
12
// found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef XFA_FXFA_CXFA_FFDATETIMEEDIT_H_ #define XFA_FXFA_CXFA_FFDATETIMEEDIT_H_ #include "core/fxcrt/fx_coordinates.h" #include "xfa/fxfa/cxfa_fftextedit.h"
+ show +
13
14
15
16
17
enum XFA_DATETIMETYPE { XFA_DATETIMETYPE_Date = 0, XFA_DATETIMETYPE_Time, XFA_DATETIMETYPE_DateAndTime };
+ show +
18
19
20
21
22
23
24
25
26
27
class CFWL_DateTimePicker; class CFWL_Event; class CFWL_Widget; class CXFA_FFDateTimeEdit final : public CXFA_FFTextEdit { public: explicit CXFA_FFDateTimeEdit(CXFA_Node* pNode); ~CXFA_FFDateTimeEdit() override;

[CVE-2023-40093_1.diff] cxfa_ffimageedit.cpp #5
- XFA_DrawImage(pGS, rtImage, mtRotate, pDIBitmap, iAspect, - m_pNode->GetImageEditDpi(), iHorzAlign, iVertAlign); + XFA_DrawImage(pGS, rtImage, mtRotate, std::move(pDIBitmap), iAspect, + m_pNode->GetEditImageDpi(), iHorzAlign, iVertAlign); -bool CXFA_FFImageEdit::AcceptsFocusOnButtonDown(uint32_t dwFlags, - const CFX_PointF& point, - FWL_MouseCommand command) { - if (command != FWL_MouseCommand::LeftButtonDown) +bool CXFA_FFImageEdit::AcceptsFocusOnButtonDown( + Mask<XFA_FWL_KeyFlag> dwFlags, + const CFX_PointF& point, + CFWL_MessageMouse::MouseCommand command) { + if (command != CFWL_MessageMouse::MouseCommand::kLeftButtonDown)
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_ffimageedit.cpp
75
76
77
78
79
80
81
82
83
84
} XFA_AttributeValue iAspect = XFA_AttributeValue::Fit; CXFA_Value* value = m_pNode->GetFormValueIfExists(); if (value) { CXFA_Image* image = value->GetImageIfExists(); if (image) iAspect = image->GetAspect(); }
+ show +
85
86
87
88
89
90
91
92
XFA_DrawImage(pGS, rtImage, mtRotate, pDIBitmap, iAspect, m_pNode->GetImageEditDpi(), iHorzAlign, iVertAlign); } bool CXFA_FFImageEdit::AcceptsFocusOnButtonDown(uint32_t dwFlags, const CFX_PointF& point, FWL_MouseCommand command) { if (command != FWL_MouseCommand::LeftButtonDown)
+ show +
93
94
95
96
97
98
99
100
101
102
return CXFA_FFField::AcceptsFocusOnButtonDown(dwFlags, point, command); if (!m_pNode->IsOpenAccess()) return false; if (!PtInActiveRect(point)) return false; return true; }

[CVE-2023-40093_1.diff] fxfa_basic.h #3
-enum XFA_XDPPACKET { - XFA_XDPPACKET_UNKNOWN = 0, - XFA_XDPPACKET_Config = 1 << static_cast<uint8_t>(XFA_PacketType::Config), - XFA_XDPPACKET_Template = 1 << static_cast<uint8_t>(XFA_PacketType::Template), - XFA_XDPPACKET_Datasets = 1 << static_cast<uint8_t>(XFA_PacketType::Datasets), - XFA_XDPPACKET_Form = 1 << static_cast<uint8_t>(XFA_PacketType::Form), - XFA_XDPPACKET_LocaleSet = 1 - << static_cast<uint8_t>(XFA_PacketType::LocaleSet), - XFA_XDPPACKET_ConnectionSet = - 1 << static_cast<uint8_t>(XFA_PacketType::ConnectionSet), - XFA_XDPPACKET_SourceSet = 1 - << static_cast<uint8_t>(XFA_PacketType::SourceSet), - XFA_XDPPACKET_Xdc = 1 << static_cast<uint8_t>(XFA_PacketType::Xdc), - XFA_XDPPACKET_Pdf = 1 << static_cast<uint8_t>(XFA_PacketType::Pdf), - XFA_XDPPACKET_Xfdf = 1 << static_cast<uint8_t>(XFA_PacketType::Xfdf), - XFA_XDPPACKET_Xmpmeta = 1 << static_cast<uint8_t>(XFA_PacketType::Xmpmeta), - XFA_XDPPACKET_Signature = 1 - << static_cast<uint8_t>(XFA_PacketType::Signature), - XFA_XDPPACKET_Stylesheet = - 1 << static_cast<uint8_t>(XFA_PacketType::Stylesheet), - XFA_XDPPACKET_USER = 1 << static_cast<uint8_t>(XFA_PacketType::User), - XFA_XDPPACKET_XDP = 1 << static_cast<uint8_t>(XFA_PacketType::Xdp) -}; - -enum XFA_XDPPACKET_FLAGS { - XFA_XDPPACKET_FLAGS_COMPLETEMATCH = 1, - XFA_XDPPACKET_FLAGS_PREFIXMATCH = 2, - XFA_XDPPACKET_FLAGS_NOMATCH = 4, - XFA_XDPPACKET_FLAGS_SUPPORTONE = 8, - XFA_XDPPACKET_FLAGS_SUPPORTMANY = 16, +enum class XFA_XDPPACKET { + kUNKNOWN = 0, +#undef PCKT____ +#define PCKT____(a, b, c, d, e, f) \ + k##c = 1 << static_cast<uint8_t>(XFA_PacketType::c), +#include "xfa/fxfa/parser/packets.inc" +#undef PCKT____
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/fxfa_basic.h
45
46
47
48
49
50
51
52
53
54
XFA_HASHCODE_Xmpmeta = 0x132a8fbc }; enum class XFA_PacketType : uint8_t { #undef PCKT____ #define PCKT____(a, b, c, d, e, f) c, #include "xfa/fxfa/parser/packets.inc" #undef PCKT____ };
+ show +
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
enum XFA_XDPPACKET { XFA_XDPPACKET_UNKNOWN = 0, XFA_XDPPACKET_Config = 1 << static_cast<uint8_t>(XFA_PacketType::Config), XFA_XDPPACKET_Template = 1 << static_cast<uint8_t>(XFA_PacketType::Template), XFA_XDPPACKET_Datasets = 1 << static_cast<uint8_t>(XFA_PacketType::Datasets), XFA_XDPPACKET_Form = 1 << static_cast<uint8_t>(XFA_PacketType::Form), XFA_XDPPACKET_LocaleSet = 1 << static_cast<uint8_t>(XFA_PacketType::LocaleSet), XFA_XDPPACKET_ConnectionSet = 1 << static_cast<uint8_t>(XFA_PacketType::ConnectionSet), XFA_XDPPACKET_SourceSet = 1 << static_cast<uint8_t>(XFA_PacketType::SourceSet), XFA_XDPPACKET_Xdc = 1 << static_cast<uint8_t>(XFA_PacketType::Xdc), XFA_XDPPACKET_Pdf = 1 << static_cast<uint8_t>(XFA_PacketType::Pdf), XFA_XDPPACKET_Xfdf = 1 << static_cast<uint8_t>(XFA_PacketType::Xfdf), XFA_XDPPACKET_Xmpmeta = 1 << static_cast<uint8_t>(XFA_PacketType::Xmpmeta), XFA_XDPPACKET_Signature = 1 << static_cast<uint8_t>(XFA_PacketType::Signature), XFA_XDPPACKET_Stylesheet = 1 << static_cast<uint8_t>(XFA_PacketType::Stylesheet), XFA_XDPPACKET_USER = 1 << static_cast<uint8_t>(XFA_PacketType::User), XFA_XDPPACKET_XDP = 1 << static_cast<uint8_t>(XFA_PacketType::Xdp) }; enum XFA_XDPPACKET_FLAGS { XFA_XDPPACKET_FLAGS_COMPLETEMATCH = 1, XFA_XDPPACKET_FLAGS_PREFIXMATCH = 2, XFA_XDPPACKET_FLAGS_NOMATCH = 4, XFA_XDPPACKET_FLAGS_SUPPORTONE = 8, XFA_XDPPACKET_FLAGS_SUPPORTMANY = 16,
+ show +
85
86
87
88
89
90
91
92
93
94
}; enum class XFA_AttributeValue : uint16_t { #undef VALUE____ #define VALUE____(a, b, c) c, #include "xfa/fxfa/parser/attribute_values.inc" #undef VALUE____ }; enum class XFA_Attribute : int16_t {

[CVE-2023-40093_1.diff] cxfa_textlayout.cpp #4
-CXFA_TextLayout::CXFA_TextLayout(CXFA_FFDoc* doc, - CXFA_TextProvider* pTextProvider) - : m_pDoc(doc), m_pTextProvider(pTextProvider) { - ASSERT(m_pTextProvider); +CXFA_TextLayout::TextPiece::TextPiece() = default; + +CXFA_TextLayout::TextPiece::~TextPiece() = default; + +CXFA_TextLayout::PieceLine::PieceLine() = default; + +CXFA_TextLayout::PieceLine::~PieceLine() = default; + +CXFA_TextLayout::LoaderContext::LoaderContext() = default; + +CXFA_TextLayout::LoaderContext::~LoaderContext() = default; + +void CXFA_TextLayout::LoaderContext::Trace(cppgc::Visitor* visitor) const { + visitor->Trace(pNode); -CXFA_TextLayout::~CXFA_TextLayout() { - m_textParser.Reset(); - Unload(); +CXFA_TextLayout::CXFA_TextLayout(CXFA_FFDoc* doc, + CXFA_TextProvider* pTextProvider) + : m_pDoc(doc), + m_pTextProvider(pTextProvider), + m_pTextParser(cppgc::MakeGarbageCollected<CXFA_TextParser>( + doc->GetHeap()->GetAllocationHandle())) { + DCHECK(m_pTextProvider); +} + +CXFA_TextLayout::~CXFA_TextLayout() = default; + +void CXFA_TextLayout::Trace(cppgc::Visitor* visitor) const { + visitor->Trace(m_pDoc); + visitor->Trace(m_pTextProvider); + visitor->Trace(m_pTextDataNode); + visitor->Trace(m_pTextParser); + visitor->Trace(m_pLoader);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_textlayout.cpp
59
60
61
62
63
64
65
66
67
68
wPrev = wch; psz[iTrimLeft++] = wch; } } pText->ReleaseBuffer(iTrimLeft); } } // namespace
+ show +
69
70
71
72
73
74
75
76
77
CXFA_TextLayout::CXFA_TextLayout(CXFA_FFDoc* doc, CXFA_TextProvider* pTextProvider) : m_pDoc(doc), m_pTextProvider(pTextProvider) { ASSERT(m_pTextProvider); } CXFA_TextLayout::~CXFA_TextLayout() { m_textParser.Reset(); Unload();
+ show +
78
79
80
81
82
83
84
85
86
87
} void CXFA_TextLayout::Unload() { m_pieceLines.clear(); m_pBreak.reset(); } void CXFA_TextLayout::GetTextDataNode() { CXFA_Node* pNode = m_pTextProvider->GetTextNode(&m_bRichText); if (pNode && m_bRichText)

[CVE-2023-40093_1.diff] cxfa_textlayout.cpp #22
- if (!m_textParser.IsParsed()) - m_textParser.DoParse(pXMLContainer, m_pTextProvider); + if (!m_pTextParser->IsParsed()) + m_pTextParser->DoParse(pXMLContainer, m_pTextProvider); - auto pRootStyle = m_textParser.CreateRootStyle(m_pTextProvider); - LoadRichText(pXMLContainer, textWidth, pLinePos, pRootStyle, bSavePieces, - nullptr, true, false, 0); + auto pRootStyle = m_pTextParser->CreateRootStyle(m_pTextProvider); + LoadRichText(pXMLContainer, textWidth, pLinePos, std::move(pRootStyle), + bSavePieces, nullptr, true, false, 0);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/cxfa_textlayout.cpp
640
641
642
643
644
645
646
647
648
649
if (!m_bRichText) { LoadText(m_pTextDataNode, textWidth, pLinePos, bSavePieces); return; } const CFX_XMLNode* pXMLContainer = GetXMLContainerNode(); if (!pXMLContainer) return;
+ show +
650
651
652
653
654
655
if (!m_textParser.IsParsed()) m_textParser.DoParse(pXMLContainer, m_pTextProvider); auto pRootStyle = m_textParser.CreateRootStyle(m_pTextProvider); LoadRichText(pXMLContainer, textWidth, pLinePos, pRootStyle, bSavePieces, nullptr, true, false, 0);
+ show +
656
657
658
659
660
661
662
663
664
665
} void CXFA_TextLayout::LoadText(CXFA_Node* pNode, float textWidth, float* pLinePos, bool bSavePieces) { InitBreak(textWidth); CXFA_Para* para = m_pTextProvider->GetParaIfExists(); float fSpaceAbove = 0;

[CVE-2023-40093_1.diff] cxfa_box.cpp #3
+#include <math.h> + +#include "third_party/base/notreached.h" +#include "third_party/base/numerics/safe_conversions.h" +#include "xfa/fgas/graphics/cfgas_gegraphics.h" +#include "xfa/fgas/graphics/cfgas_gepath.h" +#include "xfa/fgas/graphics/cfgas_gepattern.h" +#include "xfa/fgas/graphics/cfgas_geshading.h" -#include "xfa/fxgraphics/cxfa_gepath.h" -#include "xfa/fxgraphics/cxfa_gepattern.h" -#include "xfa/fxgraphics/cxfa_geshading.h" -#include "xfa/fxgraphics/cxfa_graphics.h"
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_box.cpp
10
11
12
13
14
15
16
17
18
19
#include <utility> #include "fxjs/xfa/cjx_object.h" #include "xfa/fxfa/parser/cxfa_corner.h" #include "xfa/fxfa/parser/cxfa_edge.h" #include "xfa/fxfa/parser/cxfa_fill.h" #include "xfa/fxfa/parser/cxfa_margin.h" #include "xfa/fxfa/parser/cxfa_measurement.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_rectangle.h"
+ show +
20
21
22
23
#include "xfa/fxgraphics/cxfa_gepath.h" #include "xfa/fxgraphics/cxfa_gepattern.h" #include "xfa/fxgraphics/cxfa_geshading.h" #include "xfa/fxgraphics/cxfa_graphics.h"
+ show +
24
25
26
27
28
29
30
31
32
33
namespace { std::pair<XFA_AttributeValue, CXFA_Stroke*> Style3D( const std::vector<CXFA_Stroke*>& strokes) { if (strokes.empty()) return {XFA_AttributeValue::Unknown, nullptr}; CXFA_Stroke* stroke = strokes[0]; for (size_t i = 1; i < strokes.size(); i++) {

[CVE-2023-40093_1.diff] cxfa_margin.h #3
- Optional<float> TryLeftInset() const; - Optional<float> TryTopInset() const; - Optional<float> TryRightInset() const; - Optional<float> TryBottomInset() const; + absl::optional<float> TryLeftInset() const; + absl::optional<float> TryTopInset() const; + absl::optional<float> TryRightInset() const; + absl::optional<float> TryBottomInset() const; + + private: + CXFA_Margin(CXFA_Document* doc, XFA_PacketType packet);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_margin.h
12
13
14
15
16
17
18
19
20
21
class CXFA_Margin final : public CXFA_Node { public: CXFA_Margin(CXFA_Document* doc, XFA_PacketType packet); ~CXFA_Margin() override; float GetLeftInset() const; float GetTopInset() const; float GetRightInset() const; float GetBottomInset() const;
+ show +
22
23
24
25
Optional<float> TryLeftInset() const; Optional<float> TryTopInset() const; Optional<float> TryRightInset() const; Optional<float> TryBottomInset() const;
+ show +
26
27
28
}; #endif // XFA_FXFA_PARSER_CXFA_MARGIN_H_

[CVE-2023-40093_1.diff] BUILD.gn #2
+ allow_circular_includes_from = [ "../../../fxjs" ] + configs += [ + "../../../:pdfium_strict_config", + "../../../:pdfium_noshorten_config", + "../../:xfa_warnings", + ] + "../../../fxjs:gc", - allow_circular_includes_from = [ "../../../fxjs" ] - configs += [ - "../../../:pdfium_core_config", - "../../:xfa_warnings", - ] + deps = [ "../../../fxjs:gc" ]
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/BUILD.gn
682
683
684
685
686
687
688
689
690
691
] deps = [ "../../../core/fxcodec", "../../../core/fxcrt", "../../../core/fxge", "../../../fxjs", "../../fde", "../../fgas", "../../fxgraphics", ]
+ show +
692
693
694
695
696
allow_circular_includes_from = [ "../../../fxjs" ] configs += [ "../../../:pdfium_core_config", "../../:xfa_warnings", ]
+ show +
697
698
699
700
701
702
703
704
705
706
visibility = [ "../../../*" ] } pdfium_unittest_source_set("unittests") { sources = [ "cxfa_document_parser_unittest.cpp", "cxfa_localevalue_unittest.cpp", "cxfa_measurement_unittest.cpp", "cxfa_node_unittest.cpp", "cxfa_nodeiteratortemplate_unittest.cpp",
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/layout/BUILD.gn
21
22
23
24
25
26
27
28
29
30
"cxfa_viewlayoutitem.cpp", "cxfa_viewlayoutitem.h", "cxfa_viewlayoutprocessor.cpp", "cxfa_viewlayoutprocessor.h", ] deps = [ "../../../core/fxcrt", "../../../fxjs", "../parser", ]
+ show +
31
32
33
34
35
allow_circular_includes_from = [ "../../../fxjs" ] configs += [ "../../../:pdfium_core_config", "../../:xfa_warnings", ]
+ show +
36
37
38
39
40
41
42
visibility = [ "../../../*" ] } pdfium_embeddertest_source_set("embeddertests") { sources = [ "cxfa_layoutitem_embeddertest.cpp" ] pdfium_root_dir = "../../../" }

[CVE-2023-40093_1.diff] cxfa_localemgr.cpp #3
-#define FX_LANG_zh_HK 0x0c04 -#define FX_LANG_zh_CN 0x0804 -#define FX_LANG_zh_TW 0x0404 -#define FX_LANG_nl_NL 0x0413 -#define FX_LANG_en_GB 0x0809 -#define FX_LANG_en_US 0x0409 -#define FX_LANG_fr_FR 0x040c -#define FX_LANG_de_DE 0x0407 -#define FX_LANG_it_IT 0x0410 -#define FX_LANG_ja_JP 0x0411 -#define FX_LANG_ko_KR 0x0412 -#define FX_LANG_pt_BR 0x0416 -#define FX_LANG_ru_RU 0x0419 -#define FX_LANG_es_LA 0x080a -#define FX_LANG_es_ES 0x0c0a -
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_localemgr.cpp
17
18
19
20
21
22
23
24
25
26
#include "third_party/base/ptr_util.h" #include "xfa/fxfa/parser/cxfa_acrobat.h" #include "xfa/fxfa/parser/cxfa_common.h" #include "xfa/fxfa/parser/cxfa_locale.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_nodelocale.h" #include "xfa/fxfa/parser/cxfa_present.h" #include "xfa/fxfa/parser/cxfa_xmllocale.h" #include "xfa/fxfa/parser/xfa_utils.h"
+ show +
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#define FX_LANG_zh_HK 0x0c04 #define FX_LANG_zh_CN 0x0804 #define FX_LANG_zh_TW 0x0404 #define FX_LANG_nl_NL 0x0413 #define FX_LANG_en_GB 0x0809 #define FX_LANG_en_US 0x0409 #define FX_LANG_fr_FR 0x040c #define FX_LANG_de_DE 0x0407 #define FX_LANG_it_IT 0x0410 #define FX_LANG_ja_JP 0x0411 #define FX_LANG_ko_KR 0x0412 #define FX_LANG_pt_BR 0x0416 #define FX_LANG_ru_RU 0x0419 #define FX_LANG_es_LA 0x080a #define FX_LANG_es_ES 0x0c0a
+ show +
42
43
44
45
46
47
48
49
50
51
namespace { // These arrays are the hex encoded XML strings which define the locale. // <locale name="en_US" desc="English(America)"> // <calendarSymbols name="gregorian"> // <monthNames> // <month>January</month> // <month>February</month> // ...

[CVE-2023-40093_1.diff] cxfa_nodeiteratortemplate_unittest.cpp #5
- root_ = pdfium::MakeUnique<Node>(nullptr); - child1_ = pdfium::MakeUnique<Node>(root_.get()); - child2_ = pdfium::MakeUnique<Node>(root_.get()); - child3_ = pdfium::MakeUnique<Node>(child2_.get()); - child4_ = pdfium::MakeUnique<Node>(child3_.get()); - child5_ = pdfium::MakeUnique<Node>(child4_.get()); - child6_ = pdfium::MakeUnique<Node>(child3_.get()); - child7_ = pdfium::MakeUnique<Node>(child2_.get()); - child8_ = pdfium::MakeUnique<Node>(child7_.get()); - child9_ = pdfium::MakeUnique<Node>(child2_.get()); + root_ = std::make_unique<Node>(nullptr); + child1_ = std::make_unique<Node>(root_.get()); + child2_ = std::make_unique<Node>(root_.get()); + child3_ = std::make_unique<Node>(child2_.get()); + child4_ = std::make_unique<Node>(child3_.get()); + child5_ = std::make_unique<Node>(child4_.get()); + child6_ = std::make_unique<Node>(child3_.get()); + child7_ = std::make_unique<Node>(child2_.get()); + child8_ = std::make_unique<Node>(child7_.get()); + child9_ = std::make_unique<Node>(child2_.get());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_nodeiteratortemplate_unittest.cpp
50
51
52
53
54
55
56
57
58
59
// | // child1--child2 // | // child3------------child7--child9 // | | // child4--child6 child8 // | // child5 // void SetUp() override {
+ show +
60
61
62
63
64
65
66
67
68
69
root_ = pdfium::MakeUnique<Node>(nullptr); child1_ = pdfium::MakeUnique<Node>(root_.get()); child2_ = pdfium::MakeUnique<Node>(root_.get()); child3_ = pdfium::MakeUnique<Node>(child2_.get()); child4_ = pdfium::MakeUnique<Node>(child3_.get()); child5_ = pdfium::MakeUnique<Node>(child4_.get()); child6_ = pdfium::MakeUnique<Node>(child3_.get()); child7_ = pdfium::MakeUnique<Node>(child2_.get()); child8_ = pdfium::MakeUnique<Node>(child7_.get()); child9_ = pdfium::MakeUnique<Node>(child2_.get());
+ show +
70
71
72
73
74
75
76
77
78
79
} Node* root() const { return root_.get(); } Node* child1() const { return child1_.get(); } Node* child2() const { return child2_.get(); } Node* child3() const { return child3_.get(); } Node* child4() const { return child4_.get(); } Node* child5() const { return child5_.get(); } Node* child6() const { return child6_.get(); } Node* child7() const { return child7_.get(); }

[CVE-2023-40093_1.diff] cxfa_nodeiteratortemplate_unittest.cpp #6
- EXPECT_EQ(nullptr, iter.GetRoot()); - EXPECT_EQ(nullptr, iter.GetCurrent()); - EXPECT_EQ(nullptr, iter.MoveToNext()); - EXPECT_EQ(nullptr, iter.MoveToPrev()); - EXPECT_EQ(nullptr, iter.SkipChildrenAndMoveToNext()); + EXPECT_FALSE(iter.GetRoot()); + EXPECT_FALSE(iter.GetCurrent()); + EXPECT_FALSE(iter.MoveToNext()); + EXPECT_FALSE(iter.MoveToPrev()); + EXPECT_FALSE(iter.SkipChildrenAndMoveToNext());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_nodeiteratortemplate_unittest.cpp
88
89
90
91
92
93
94
95
96
97
std::unique_ptr<Node> child4_; std::unique_ptr<Node> child5_; std::unique_ptr<Node> child6_; std::unique_ptr<Node> child7_; std::unique_ptr<Node> child8_; std::unique_ptr<Node> child9_; }; TEST_F(CXFA_NodeIteratorTemplateTest, Empty) { Iterator iter(nullptr);
+ show +
98
99
100
101
102
EXPECT_EQ(nullptr, iter.GetRoot()); EXPECT_EQ(nullptr, iter.GetCurrent()); EXPECT_EQ(nullptr, iter.MoveToNext()); EXPECT_EQ(nullptr, iter.MoveToPrev()); EXPECT_EQ(nullptr, iter.SkipChildrenAndMoveToNext());
+ show +
103
104
105
106
107
108
109
110
111
112
} TEST_F(CXFA_NodeIteratorTemplateTest, Root) { Iterator iter(root()); EXPECT_EQ(root(), iter.GetRoot()); EXPECT_EQ(root(), iter.GetCurrent()); } TEST_F(CXFA_NodeIteratorTemplateTest, Current) { Iterator iter(root());

[CVE-2023-40093_1.diff] cxfa_nodeiteratortemplate_unittest.cpp #10
- EXPECT_EQ(nullptr, iter.MoveToNext()); - EXPECT_EQ(nullptr, iter.GetCurrent()); + EXPECT_FALSE(iter.MoveToNext()); + EXPECT_FALSE(iter.GetCurrent()); - EXPECT_EQ(nullptr, iter.MoveToNext()); - EXPECT_EQ(nullptr, iter.GetCurrent()); + EXPECT_FALSE(iter.MoveToNext()); + EXPECT_FALSE(iter.GetCurrent());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_nodeiteratortemplate_unittest.cpp
189
190
191
192
193
194
195
196
197
198
EXPECT_EQ(child7(), iter.MoveToNext()); EXPECT_EQ(child7(), iter.GetCurrent()); EXPECT_EQ(child8(), iter.MoveToNext()); EXPECT_EQ(child8(), iter.GetCurrent()); EXPECT_EQ(child9(), iter.MoveToNext()); EXPECT_EQ(child9(), iter.GetCurrent());
+ show +
199
200
201
202
203
EXPECT_EQ(nullptr, iter.MoveToNext()); EXPECT_EQ(nullptr, iter.GetCurrent()); EXPECT_EQ(nullptr, iter.MoveToNext()); EXPECT_EQ(nullptr, iter.GetCurrent());
+ show +
204
205
206
207
208
209
210
211
212
213
} TEST_F(CXFA_NodeIteratorTemplateTest, SkipChildrenAndMoveToNext) { Iterator iter(root()); iter.SetCurrent(child3()); EXPECT_EQ(child7(), iter.SkipChildrenAndMoveToNext()); EXPECT_EQ(child9(), iter.SkipChildrenAndMoveToNext()); EXPECT_EQ(nullptr, iter.SkipChildrenAndMoveToNext()); }

[CVE-2023-40093_1.diff] cxfa_validate.cpp #3
- {XFA_Element::Message, 1, 0}, - {XFA_Element::Picture, 1, 0}, - {XFA_Element::Script, 1, 0}, - {XFA_Element::Extras, 1, 0}, + {XFA_Element::Message, 1, {}}, + {XFA_Element::Picture, 1, {}}, + {XFA_Element::Script, 1, {}}, + {XFA_Element::Extras, 1, {}},
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_validate.cpp
10
11
12
13
14
15
16
17
18
19
#include "fxjs/xfa/cjx_object.h" #include "third_party/base/ptr_util.h" #include "xfa/fxfa/parser/cxfa_message.h" #include "xfa/fxfa/parser/cxfa_picture.h" #include "xfa/fxfa/parser/cxfa_script.h" #include "xfa/fxfa/parser/xfa_basic_data.h" namespace { const CXFA_Node::PropertyData kValidatePropertyData[] = {
+ show +
20
21
22
23
{XFA_Element::Message, 1, 0}, {XFA_Element::Picture, 1, 0}, {XFA_Element::Script, 1, 0}, {XFA_Element::Extras, 1, 0},
+ show +
24
25
26
27
28
29
30
31
32
33
}; const CXFA_Node::AttributeData kValidateAttributeData[] = { {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr}, {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr}, {XFA_Attribute::ScriptTest, XFA_AttributeType::Enum, (void*)XFA_AttributeValue::Error}, {XFA_Attribute::NullTest, XFA_AttributeType::Enum, (void*)XFA_AttributeValue::Disabled}, {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr}, {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},

[CVE-2023-40093_1.diff] cxfa_validate.cpp #4
- : CXFA_Node( - doc, - packet, - (XFA_XDPPACKET_Config | XFA_XDPPACKET_Template | XFA_XDPPACKET_Form), - XFA_ObjectType::ContentNode, - XFA_Element::Validate, - kValidatePropertyData, - kValidateAttributeData, - pdfium::MakeUnique<CJX_Node>(this)) {} + : CXFA_Node(doc, + packet, + {XFA_XDPPACKET::kConfig, XFA_XDPPACKET::kTemplate, + XFA_XDPPACKET::kForm}, + XFA_ObjectType::ContentNode, + XFA_Element::Validate, + kValidatePropertyData, + kValidateAttributeData, + cppgc::MakeGarbageCollected<CJX_Node>( + doc->GetHeap()->GetAllocationHandle(), + this)) {}
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_validate.cpp
36
37
38
39
40
41
42
43
44
45
{XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0}, }; constexpr wchar_t kFormatTest[] = L"formatTest"; constexpr wchar_t kNullTest[] = L"nullTest"; constexpr wchar_t kScriptTest[] = L"scriptTest"; } // namespace CXFA_Validate::CXFA_Validate(CXFA_Document* doc, XFA_PacketType packet)
+ show +
46
47
48
49
50
51
52
53
54
: CXFA_Node( doc, packet, (XFA_XDPPACKET_Config | XFA_XDPPACKET_Template | XFA_XDPPACKET_Form), XFA_ObjectType::ContentNode, XFA_Element::Validate, kValidatePropertyData, kValidateAttributeData, pdfium::MakeUnique<CJX_Node>(this)) {}
+ show +
55
56
57
58
59
60
61
62
63
64
CXFA_Validate::~CXFA_Validate() = default; XFA_AttributeValue CXFA_Validate::GetFormatTest() { return JSObject()->GetEnum(XFA_Attribute::FormatTest); } void CXFA_Validate::SetNullTest(const WideString& wsValue) { Optional<XFA_AttributeValue> item = XFA_GetAttributeValueByName(wsValue.AsStringView());

[CVE-2023-40093_1.diff] cxfa_font.cpp #3
- : CXFA_Node( - doc, - packet, - (XFA_XDPPACKET_Template | XFA_XDPPACKET_Config | XFA_XDPPACKET_Form), - XFA_ObjectType::Node, - XFA_Element::Font, - kFontPropertyData, - kFontAttributeData, - pdfium::MakeUnique<CJX_Node>(this)) {} + : CXFA_Node(doc, + packet, + {XFA_XDPPACKET::kTemplate, XFA_XDPPACKET::kConfig, + XFA_XDPPACKET::kForm}, + XFA_ObjectType::Node, + XFA_Element::Font, + kFontPropertyData, + kFontAttributeData, + cppgc::MakeGarbageCollected<CJX_Node>( + doc->GetHeap()->GetAllocationHandle(), + this)) {}
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_font.cpp
46
47
48
49
50
51
52
53
54
55
{XFA_Attribute::UnderlinePeriod, XFA_AttributeType::Enum, (void*)XFA_AttributeValue::All}, {XFA_Attribute::Overline, XFA_AttributeType::Integer, (void*)0}, {XFA_Attribute::GenericFamily, XFA_AttributeType::Enum, (void*)XFA_AttributeValue::Serif}, }; } // namespace CXFA_Font::CXFA_Font(CXFA_Document* doc, XFA_PacketType packet)
+ show +
56
57
58
59
60
61
62
63
64
: CXFA_Node( doc, packet, (XFA_XDPPACKET_Template | XFA_XDPPACKET_Config | XFA_XDPPACKET_Form), XFA_ObjectType::Node, XFA_Element::Font, kFontPropertyData, kFontAttributeData, pdfium::MakeUnique<CJX_Node>(this)) {}
+ show +
65
66
67
68
69
70
71
72
73
74
CXFA_Font::~CXFA_Font() = default; float CXFA_Font::GetBaselineShift() const { return JSObject()->GetMeasureInUnit(XFA_Attribute::BaselineShift, XFA_Unit::Pt); } float CXFA_Font::GetHorizontalScale() { WideString wsValue = JSObject()->GetCData(XFA_Attribute::FontHorizontalScale);

[CVE-2023-40093_1.diff] xfa_utils.cpp #7
- WideString wsAttr; - SaveAttribute(pNode, attr, WideString::FromASCII(XFA_AttributeToName(attr)), - bSaveXML, wsAttr); - wsAttrs += wsAttr; + WideString wsAttr = WideString::FromASCII(XFA_AttributeToName(attr)); + wsAttrs += SaveAttribute(pNode, attr, wsAttr.AsStringView(), bSaveXML);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/xfa_utils.cpp
158
159
160
161
162
163
164
165
166
167
WideString wsAttrs; for (size_t i = 0;; ++i) { XFA_Attribute attr = pNode->GetAttribute(i); if (attr == XFA_Attribute::Unknown) break; if (attr == XFA_Attribute::Name || (AttributeSaveInDataModel(pNode, attr) && !bSaveXML)) { continue; }
+ show +
168
169
170
171
WideString wsAttr; SaveAttribute(pNode, attr, WideString::FromASCII(XFA_AttributeToName(attr)), bSaveXML, wsAttr); wsAttrs += wsAttr;
+ show +
172
173
174
175
176
177
178
179
180
181
} WideString wsChildren; switch (pNode->GetObjectType()) { case XFA_ObjectType::ContentNode: { if (!bSaveXML && !ContentNodeNeedtoExport(pNode)) break; CXFA_Node* pRawValueNode = pNode->GetFirstChild(); while (pRawValueNode &&

[CVE-2023-40093_1.diff] xfa_utils.cpp #10
- buf << "<"; - buf << bodyTagName; - buf << " xmlns=\"\"\n>"; - for (int32_t i = 0; i < pdfium::CollectionSize<int32_t>(wsSelTextArray); - i++) { - buf << "<value\n>"; - buf << ExportEncodeContent(wsSelTextArray[i]); - buf << "</value\n>"; - } - buf << "</"; - buf << bodyTagName; - buf << "\n>"; + buf << "<" << bodyTagName << " xmlns=\"\">\n"; + for (const WideString& text : wsSelTextArray) + buf << "<value>" << ExportEncodeContent(text) << "</value>\n"; + buf << "</" << bodyTagName << ">\n";
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/xfa_utils.cpp
215
216
217
218
219
220
221
222
223
224
std::vector<WideString> wsSelTextArray = fxcrt::Split(rawValue.value(), L'\n'); CXFA_Node* pParentNode = pNode->GetParent(); CXFA_Node* pGrandparentNode = pParentNode->GetParent(); WideString bodyTagName = pGrandparentNode->JSObject()->GetCData(XFA_Attribute::Name); if (bodyTagName.IsEmpty()) bodyTagName = L"ListBox1";
+ show +
225
226
227
228
229
230
231
232
233
234
235
236
buf << "<"; buf << bodyTagName; buf << " xmlns=\"\"\n>"; for (int32_t i = 0; i < pdfium::CollectionSize<int32_t>(wsSelTextArray); i++) { buf << "<value\n>"; buf << ExportEncodeContent(wsSelTextArray[i]); buf << "</value\n>"; } buf << "</"; buf << bodyTagName; buf << "\n>";
+ show +
237
238
239
240
241
242
243
244
245
246
wsChildren += buf.AsStringView(); buf.Clear(); } else { WideString wsValue = pRawValueNode->JSObject()->GetCData(XFA_Attribute::Value); wsChildren += ExportEncodeContent(wsValue); } break; } case XFA_ObjectType::TextNode:

[CVE-2023-40093_1.diff] xfa_utils.cpp #15
- WideString wsAttr; - SaveAttribute(pNode, attr, WideString::FromASCII(XFA_AttributeToName(attr)), - false, wsAttr); - wsOutput += wsAttr; + WideString wsAttr = WideString::FromASCII(XFA_AttributeToName(attr)); + wsOutput += SaveAttribute(pNode, attr, wsAttr.AsStringView(), false);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/xfa_utils.cpp
325
326
327
328
329
330
331
332
333
334
SaveAttribute(pNode, XFA_Attribute::Name, L"name", true, wsOutput); WideString wsAttrs; for (size_t i = 0;; ++i) { XFA_Attribute attr = pNode->GetAttribute(i); if (attr == XFA_Attribute::Unknown) break; if (attr == XFA_Attribute::Name) continue;
+ show +
335
336
337
338
WideString wsAttr; SaveAttribute(pNode, attr, WideString::FromASCII(XFA_AttributeToName(attr)), false, wsAttr); wsOutput += wsAttr;
+ show +
339
340
341
342
343
344
345
346
347
348
} if (!wsOutput.IsEmpty()) pStream->WriteString(wsOutput.ToUTF8().AsStringView()); CXFA_Node* pChildNode = pNode->GetFirstChild(); if (!pChildNode) { pStream->WriteString(" />\n"); return; }

[CVE-2023-40093_1.diff] xfa_utils.cpp #18
- int32_t iVTType = XFA_VT_NULL; - switch (pValueChild->GetElementType()) { - case XFA_Element::Decimal: - iVTType = XFA_VT_DECIMAL; - break; - case XFA_Element::Float: - iVTType = XFA_VT_FLOAT; - break; - case XFA_Element::Date: - iVTType = XFA_VT_DATE; - break; - case XFA_Element::Time: - iVTType = XFA_VT_TIME; - break; - case XFA_Element::DateTime: - iVTType = XFA_VT_DATETIME; - break; - case XFA_Element::Boolean: - iVTType = XFA_VT_BOOLEAN; - break; - case XFA_Element::Integer: - iVTType = XFA_VT_INTEGER; - break; - case XFA_Element::Text: - iVTType = XFA_VT_TEXT; - break; - default: - iVTType = XFA_VT_NULL; - break; - } - return CXFA_LocaleValue(iVTType, pNode->GetRawValue(), + return CXFA_LocaleValue(XFA_GetLocaleValueType(pValueChild->GetElementType()), + pNode->GetRawValue(), +CXFA_LocaleValue::ValueType XFA_GetLocaleValueType(XFA_Element element) { + switch (element) { + case XFA_Element::Decimal: + return CXFA_LocaleValue::ValueType::kDecimal; + case XFA_Element::Float: + return CXFA_LocaleValue::ValueType::kFloat; + case XFA_Element::Date: + return CXFA_LocaleValue::ValueType::kDate; + case XFA_Element::Time: + return CXFA_LocaleValue::ValueType::kTime; + case XFA_Element::DateTime: + return CXFA_LocaleValue::ValueType::kDateTime; + case XFA_Element::Boolean: + return CXFA_LocaleValue::ValueType::kBoolean; + case XFA_Element::Integer: + return CXFA_LocaleValue::ValueType::kInteger; + case XFA_Element::Text: + return CXFA_LocaleValue::ValueType::kText; + default: + return CXFA_LocaleValue::ValueType::kNull; + } +} +
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/xfa_utils.cpp
378
379
380
381
382
383
384
385
386
387
CXFA_LocaleValue XFA_GetLocaleValue(CXFA_Node* pNode) { CXFA_Value* pNodeValue = pNode->GetChild<CXFA_Value>(0, XFA_Element::Value, false); if (!pNodeValue) return CXFA_LocaleValue(); CXFA_Node* pValueChild = pNodeValue->GetFirstChild(); if (!pValueChild) return CXFA_LocaleValue();
+ show +
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
int32_t iVTType = XFA_VT_NULL; switch (pValueChild->GetElementType()) { case XFA_Element::Decimal: iVTType = XFA_VT_DECIMAL; break; case XFA_Element::Float: iVTType = XFA_VT_FLOAT; break; case XFA_Element::Date: iVTType = XFA_VT_DATE; break; case XFA_Element::Time: iVTType = XFA_VT_TIME; break; case XFA_Element::DateTime: iVTType = XFA_VT_DATETIME; break; case XFA_Element::Boolean: iVTType = XFA_VT_BOOLEAN; break; case XFA_Element::Integer: iVTType = XFA_VT_INTEGER; break; case XFA_Element::Text: iVTType = XFA_VT_TEXT; break; default: iVTType = XFA_VT_NULL; break; } return CXFA_LocaleValue(iVTType, pNode->GetRawValue(),
+ show +
419
420
421
422
423
424
425
426
427
428
pNode->GetDocument()->GetLocaleMgr()); } bool XFA_FDEExtension_ResolveNamespaceQualifier(CFX_XMLElement* pNode, const WideString& wsQualifier, WideString* wsNamespaceURI) { if (!pNode) return false; CFX_XMLNode* pFakeRoot = pNode->GetRoot();

[CVE-2023-40093_1.diff] cxfa_node_unittest.cpp #9
- EXPECT_EQ(nullptr, GetNode()->GetFirstChild()); - EXPECT_EQ(nullptr, GetNode()->GetLastChild()); - EXPECT_EQ(nullptr, child0->GetParent()); - EXPECT_EQ(nullptr, child0->GetNextSibling()); - EXPECT_EQ(nullptr, child0->GetPrevSibling()); + EXPECT_FALSE(GetNode()->GetFirstChild()); + EXPECT_FALSE(GetNode()->GetLastChild()); + EXPECT_FALSE(child0->GetParent()); + EXPECT_FALSE(child0->GetNextSibling()); + EXPECT_FALSE(child0->GetPrevSibling());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_node_unittest.cpp
229
230
231
232
233
234
235
236
237
238
} TEST_F(CXFANodeTest, RemoveOnlyChild) { CXFA_Node* child0 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child0); EXPECT_EQ(child0, GetNode()->GetFirstChild()); EXPECT_EQ(child0, GetNode()->GetLastChild()); GetNode()->RemoveChildAndNotify(child0, false);
+ show +
239
240
241
242
243
EXPECT_EQ(nullptr, GetNode()->GetFirstChild()); EXPECT_EQ(nullptr, GetNode()->GetLastChild()); EXPECT_EQ(nullptr, child0->GetParent()); EXPECT_EQ(nullptr, child0->GetNextSibling()); EXPECT_EQ(nullptr, child0->GetPrevSibling());
+ show +
244
245
246
247
248
249
250
251
252
253
} TEST_F(CXFANodeTest, RemoveFirstChild) { CXFA_Node* child0 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child0); CXFA_Node* child1 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child1);

[CVE-2023-40093_1.diff] cxfa_node_unittest.cpp #10
- EXPECT_EQ(nullptr, child1->GetPrevSibling()); - EXPECT_EQ(nullptr, child0->GetParent()); - EXPECT_EQ(nullptr, child0->GetNextSibling()); - EXPECT_EQ(nullptr, child0->GetPrevSibling()); + EXPECT_FALSE(child1->GetPrevSibling()); + EXPECT_FALSE(child0->GetParent()); + EXPECT_FALSE(child0->GetNextSibling()); + EXPECT_FALSE(child0->GetPrevSibling());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_node_unittest.cpp
254
255
256
257
258
259
260
261
262
263
CXFA_Node* child2 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child2); EXPECT_EQ(child0, GetNode()->GetFirstChild()); EXPECT_EQ(child2, GetNode()->GetLastChild()); GetNode()->RemoveChildAndNotify(child0, false); EXPECT_EQ(child1, GetNode()->GetFirstChild()); EXPECT_EQ(child2, GetNode()->GetLastChild());
+ show +
264
265
266
267
EXPECT_EQ(nullptr, child1->GetPrevSibling()); EXPECT_EQ(nullptr, child0->GetParent()); EXPECT_EQ(nullptr, child0->GetNextSibling()); EXPECT_EQ(nullptr, child0->GetPrevSibling());
+ show +
268
269
270
271
272
273
274
275
276
277
} TEST_F(CXFANodeTest, RemoveLastChild) { CXFA_Node* child0 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child0); CXFA_Node* child1 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child1);

[CVE-2023-40093_1.diff] cxfa_node_unittest.cpp #11
- EXPECT_EQ(nullptr, child1->GetNextSibling()); - EXPECT_EQ(nullptr, child2->GetParent()); - EXPECT_EQ(nullptr, child2->GetNextSibling()); - EXPECT_EQ(nullptr, child2->GetPrevSibling()); + EXPECT_FALSE(child1->GetNextSibling()); + EXPECT_FALSE(child2->GetParent()); + EXPECT_FALSE(child2->GetNextSibling()); + EXPECT_FALSE(child2->GetPrevSibling());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_node_unittest.cpp
278
279
280
281
282
283
284
285
286
287
CXFA_Node* child2 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child2); EXPECT_EQ(child0, GetNode()->GetFirstChild()); EXPECT_EQ(child2, GetNode()->GetLastChild()); GetNode()->RemoveChildAndNotify(child2, false); EXPECT_EQ(child0, GetNode()->GetFirstChild()); EXPECT_EQ(child1, GetNode()->GetLastChild());
+ show +
288
289
290
291
EXPECT_EQ(nullptr, child1->GetNextSibling()); EXPECT_EQ(nullptr, child2->GetParent()); EXPECT_EQ(nullptr, child2->GetNextSibling()); EXPECT_EQ(nullptr, child2->GetPrevSibling());
+ show +
292
293
294
295
296
297
298
299
300
301
} TEST_F(CXFANodeTest, RemoveChild) { CXFA_Node* child0 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child0); CXFA_Node* child1 = GetDoc()->CreateNode(XFA_PacketType::Form, XFA_Element::Ui); GetNode()->InsertChildAndNotify(-1, child1);

[CVE-2023-40093_1.diff] cxfa_fill.cpp #3
- {XFA_Element::Pattern, 1, XFA_PROPERTYFLAG_OneOf}, - {XFA_Element::Solid, 1, - XFA_PROPERTYFLAG_OneOf | XFA_PROPERTYFLAG_DefaultOneOf}, - {XFA_Element::Stipple, 1, XFA_PROPERTYFLAG_OneOf}, - {XFA_Element::Color, 1, 0}, - {XFA_Element::Linear, 1, XFA_PROPERTYFLAG_OneOf}, - {XFA_Element::Extras, 1, 0}, - {XFA_Element::Radial, 1, XFA_PROPERTYFLAG_OneOf}, + {XFA_Element::Pattern, 1, {XFA_PropertyFlag::kOneOf}}, + {XFA_Element::Solid, + 1, + {XFA_PropertyFlag::kOneOf, XFA_PropertyFlag::kDefaultOneOf}}, + {XFA_Element::Stipple, 1, {XFA_PropertyFlag::kOneOf}}, + {XFA_Element::Color, 1, {}}, + {XFA_Element::Linear, 1, {XFA_PropertyFlag::kOneOf}}, + {XFA_Element::Extras, 1, {}}, + {XFA_Element::Radial, 1, {XFA_PropertyFlag::kOneOf}},
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_fill.cpp
12
13
14
15
16
17
18
19
20
21
#include "xfa/fxfa/parser/cxfa_color.h" #include "xfa/fxfa/parser/cxfa_linear.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_pattern.h" #include "xfa/fxfa/parser/cxfa_radial.h" #include "xfa/fxfa/parser/cxfa_stipple.h" namespace { const CXFA_Node::PropertyData kFillPropertyData[] = {
+ show +
22
23
24
25
26
27
28
29
{XFA_Element::Pattern, 1, XFA_PROPERTYFLAG_OneOf}, {XFA_Element::Solid, 1, XFA_PROPERTYFLAG_OneOf | XFA_PROPERTYFLAG_DefaultOneOf}, {XFA_Element::Stipple, 1, XFA_PROPERTYFLAG_OneOf}, {XFA_Element::Color, 1, 0}, {XFA_Element::Linear, 1, XFA_PROPERTYFLAG_OneOf}, {XFA_Element::Extras, 1, 0}, {XFA_Element::Radial, 1, XFA_PROPERTYFLAG_OneOf},
+ show +
30
31
32
33
34
35
36
37
38
39
}; const CXFA_Node::AttributeData kFillAttributeData[] = { {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr}, {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr}, {XFA_Attribute::Presence, XFA_AttributeType::Enum, (void*)XFA_AttributeValue::Visible}, {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr}, };

[CVE-2023-40093_1.diff] cxfa_fill.cpp #5
-FX_ARGB CXFA_Fill::GetColor(bool bText) { - CXFA_Color* pColor = GetChild<CXFA_Color>(0, XFA_Element::Color, false); - if (!pColor) - return bText ? 0xFF000000 : 0xFFFFFFFF; - return pColor->GetValueOrDefault(bText ? 0xFF000000 : 0xFFFFFFFF); +FX_ARGB CXFA_Fill::GetFillColor() const { + const auto* pColor = GetChild<CXFA_Color>(0, XFA_Element::Color, false); + return pColor ? pColor->GetValueOrDefault(0xFFFFFFFF) : 0xFFFFFFFF; +} + +FX_ARGB CXFA_Fill::GetTextColor() const { + const auto* pColor = GetChild<CXFA_Color>(0, XFA_Element::Color, false); + return pColor ? pColor->GetValueOrDefault(0xFF000000) : 0xFF000000;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_fill.cpp
60
61
62
63
64
65
66
67
68
69
void CXFA_Fill::SetColor(FX_ARGB color) { CXFA_Color* pColor = JSObject()->GetOrCreateProperty<CXFA_Color>(0, XFA_Element::Color); if (!pColor) return; pColor->SetValue(color); }
+ show +
70
71
72
73
74
FX_ARGB CXFA_Fill::GetColor(bool bText) { CXFA_Color* pColor = GetChild<CXFA_Color>(0, XFA_Element::Color, false); if (!pColor) return bText ? 0xFF000000 : 0xFFFFFFFF; return pColor->GetValueOrDefault(bText ? 0xFF000000 : 0xFFFFFFFF);
+ show +
75
76
77
78
79
80
81
82
83
84
} XFA_Element CXFA_Fill::GetType() const { CXFA_Node* pChild = GetFirstChild(); while (pChild) { XFA_Element eType = pChild->GetElementType(); if (eType != XFA_Element::Color && eType != XFA_Element::Extras) return eType; pChild = pChild->GetNextSibling();

[CVE-2023-40093_1.diff] cxfa_node.cpp #97
- Optional<float> min = TryMinWidth(); - if (min) - fWidthCalc = std::max(fWidthCalc, *min); + absl::optional<float> min = TryMinWidth(); + if (min.has_value()) + fWidthCalc = std::max(fWidthCalc, min.value()); - Optional<float> max = TryMaxWidth(); - if (max && *max > 0) - fWidthCalc = std::min(fWidthCalc, *max); + absl::optional<float> max = TryMaxWidth(); + if (max.has_value() && max.value() > 0) + fWidthCalc = std::min(fWidthCalc, max.value());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_node.cpp
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
CXFA_ImageEditData* pData = m_pLayoutData->AsFieldLayoutData()->AsImageEditData(); return CFX_Size(pData->m_iImageXDpi, pData->m_iImageYDpi); } float CXFA_Node::CalculateWidgetAutoWidth(float fWidthCalc) { CXFA_Margin* margin = GetMarginIfExists(); if (margin) fWidthCalc += margin->GetLeftInset() + margin->GetRightInset();
+ show +
3427
3428
3429
3430
3431
3432
3433
Optional<float> min = TryMinWidth(); if (min) fWidthCalc = std::max(fWidthCalc, *min); Optional<float> max = TryMaxWidth(); if (max && *max > 0) fWidthCalc = std::min(fWidthCalc, *max);
+ show +
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
return fWidthCalc; } float CXFA_Node::GetWidthWithoutMargin(float fWidthCalc) const { CXFA_Margin* margin = GetMarginIfExists(); if (margin) fWidthCalc -= margin->GetLeftInset() + margin->GetRightInset(); return fWidthCalc; }

[CVE-2023-40093_1.diff] cxfa_node.cpp #98
- Optional<float> min = TryMinHeight(); - if (min) - fHeightCalc = std::max(fHeightCalc, *min); + absl::optional<float> min = TryMinHeight(); + if (min.has_value()) + fHeightCalc = std::max(fHeightCalc, min.value()); - Optional<float> max = TryMaxHeight(); - if (max && *max > 0) - fHeightCalc = std::min(fHeightCalc, *max); + absl::optional<float> max = TryMaxHeight(); + if (max.has_value() && max.value() > 0) + fHeightCalc = std::min(fHeightCalc, max.value());
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_node.cpp
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
if (margin) fWidthCalc -= margin->GetLeftInset() + margin->GetRightInset(); return fWidthCalc; } float CXFA_Node::CalculateWidgetAutoHeight(float fHeightCalc) { CXFA_Margin* margin = GetMarginIfExists(); if (margin) fHeightCalc += margin->GetTopInset() + margin->GetBottomInset();
+ show +
3450
3451
3452
3453
3454
3455
3456
Optional<float> min = TryMinHeight(); if (min) fHeightCalc = std::max(fHeightCalc, *min); Optional<float> max = TryMaxHeight(); if (max && *max > 0) fHeightCalc = std::min(fHeightCalc, *max);
+ show +
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
return fHeightCalc; } float CXFA_Node::GetHeightWithoutMargin(float fHeightCalc) const { CXFA_Margin* margin = GetMarginIfExists(); if (margin) fHeightCalc -= margin->GetTopInset() + margin->GetBottomInset(); return fHeightCalc; }

[CVE-2023-40093_1.diff] cxfa_node.cpp #112
- return doc->GetApp()->GetXFAFontMgr()->GetFont(doc, wsFontName.AsStringView(), - dwFontStyle); + return doc->GetApp()->GetXFAFontMgr()->GetFont(doc, wsFontName, dwFontStyle); -bool CXFA_Node::HasButtonRollover() { - CXFA_Items* pItems = GetChild<CXFA_Items>(0, XFA_Element::Items, false); +bool CXFA_Node::HasButtonRollover() const { + const auto* pItems = GetChild<CXFA_Items>(0, XFA_Element::Items, false);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_node.cpp
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
uint32_t dwFontStyle = 0; CXFA_Font* font = GetFontIfExists(); if (font) { if (font->IsBold()) dwFontStyle |= FXFONT_FORCE_BOLD; if (font->IsItalic()) dwFontStyle |= FXFONT_ITALIC; wsFontName = font->GetTypeface(); }
+ show +
3905
3906
3907
3908
3909
3910
return doc->GetApp()->GetXFAFontMgr()->GetFont(doc, wsFontName.AsStringView(), dwFontStyle); } bool CXFA_Node::HasButtonRollover() { CXFA_Items* pItems = GetChild<CXFA_Items>(0, XFA_Element::Items, false);
+ show +
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
if (!pItems) return false; for (CXFA_Node* pText = pItems->GetFirstChild(); pText; pText = pText->GetNextSibling()) { if (pText->JSObject() ->GetCData(XFA_Attribute::Name) .EqualsASCII("rollover")) { return !pText->JSObject()->GetContent(false).IsEmpty(); }

[CVE-2023-40093_1.diff] cxfa_document.cpp #17
- uint32_t dFlags = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_BindNew; - if (bUpLevel || !wsRef.EqualsASCII("name")) - dFlags |= (XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings); + Mask<XFA_ResolveFlag> dwFlags = {XFA_ResolveFlag::kChildren, + XFA_ResolveFlag::kBindNew}; + if (bUpLevel || !wsRef.EqualsASCII("name")) { + dwFlags |= XFA_ResolveFlag::kParent; + dwFlags |= XFA_ResolveFlag::kSiblings; + } + absl::optional<CFXJSE_Engine::ResolveResult> maybeResult = + pDocument->GetScriptContext()->ResolveObjectsWithBindNode( + pDataScope, wsRef.AsStringView(), dwFlags, pTemplateNode); + if (!maybeResult.has_value()) + return nullptr; - XFA_RESOLVENODE_RS rs; - pDocument->GetScriptContext()->ResolveObjects( - pDataScope, wsRef.AsStringView(), &rs, dFlags, pTemplateNode); - if (rs.dwFlags == XFA_ResolveNode_RSType_CreateNodeAll || - rs.dwFlags == XFA_ResolveNode_RSType_CreateNodeMidAll || - rs.objects.size() > 1) { - return pDocument->GetNotBindNode(rs.objects); + if (maybeResult.value().type == + CFXJSE_Engine::ResolveResult::Type::kCreateNodeAll || + maybeResult.value().type == + CFXJSE_Engine::ResolveResult::Type::kCreateNodeMidAll || + maybeResult.value().objects.size() > 1) { + return pDocument->GetNotBindNode(maybeResult.value().objects); - if (rs.dwFlags == XFA_ResolveNode_RSType_CreateNodeOne) { - CXFA_Object* pObject = - !rs.objects.empty() ? rs.objects.front().Get() : nullptr; + if (maybeResult.value().type == + CFXJSE_Engine::ResolveResult::Type::kCreateNodeOne) { + CXFA_Object* pObject = !maybeResult.value().objects.empty() + ? maybeResult.value().objects.front().Get() + : nullptr;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_document.cpp
339
340
341
342
343
344
345
346
347
348
return nullptr; } CXFA_Node* FindDataRefDataNode(CXFA_Document* pDocument, const WideString& wsRef, CXFA_Node* pDataScope, XFA_Element eMatchNodeType, CXFA_Node* pTemplateNode, bool bForceBind, bool bUpLevel) {
+ show +
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
uint32_t dFlags = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_BindNew; if (bUpLevel || !wsRef.EqualsASCII("name")) dFlags |= (XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings); XFA_RESOLVENODE_RS rs; pDocument->GetScriptContext()->ResolveObjects( pDataScope, wsRef.AsStringView(), &rs, dFlags, pTemplateNode); if (rs.dwFlags == XFA_ResolveNode_RSType_CreateNodeAll || rs.dwFlags == XFA_ResolveNode_RSType_CreateNodeMidAll || rs.objects.size() > 1) { return pDocument->GetNotBindNode(rs.objects); } if (rs.dwFlags == XFA_ResolveNode_RSType_CreateNodeOne) { CXFA_Object* pObject = !rs.objects.empty() ? rs.objects.front().Get() : nullptr;
+ show +
365
366
367
368
369
370
371
372
373
374
CXFA_Node* pNode = ToNode(pObject); return (bForceBind || !pNode || !pNode->HasBindItem()) ? pNode : nullptr; } return nullptr; } CXFA_Node* FindMatchingDataNode( CXFA_Document* pDocument, CXFA_Node* pTemplateNode, CXFA_Node* pDataScope,

[CVE-2023-40093_1.diff] cxfa_document.cpp #24
- pDataNode->JSObject()->SetAttributeValue(wsValue, wsValue, false, - false); - pFormNode->JSObject()->SetCData(XFA_Attribute::Value, wsContent, - false, false); + pDataNode->JSObject()->SetAttributeValue(wsValue, wsValue); + pFormNode->JSObject()->SetCData(XFA_Attribute::Value, wsContent);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_document.cpp
575
576
577
578
579
580
581
582
583
584
if (!pItems) continue; CXFA_Node* pText = pItems->GetFirstChild(); if (!pText) continue; WideString wsContent = pText->JSObject()->GetContent(false); if (wsContent == wsValue) { pChecked = pChild;
+ show +
585
586
587
588
pDataNode->JSObject()->SetAttributeValue(wsValue, wsValue, false, false); pFormNode->JSObject()->SetCData(XFA_Attribute::Value, wsContent, false, false);
+ show +
589
590
591
592
593
594
595
596
597
598
break; } } if (!pChecked) break; pChild = pFormNode->GetFirstChild(); for (; pChild; pChild = pChild->GetNextSibling()) { if (pChild == pChecked) continue;

[CVE-2023-40093_1.diff] cxfa_node.h #13
- Optional<bool> GetDefaultBoolean(XFA_Attribute attr) const; - Optional<int32_t> GetDefaultInteger(XFA_Attribute attr) const; - Optional<CXFA_Measurement> GetDefaultMeasurement(XFA_Attribute attr) const; - Optional<WideString> GetDefaultCData(XFA_Attribute attr) const; - Optional<XFA_AttributeValue> GetDefaultEnum(XFA_Attribute attr) const; + absl::optional<bool> GetDefaultBoolean(XFA_Attribute attr) const; + absl::optional<int32_t> GetDefaultInteger(XFA_Attribute attr) const; + absl::optional<CXFA_Measurement> GetDefaultMeasurement( + XFA_Attribute attr) const; + absl::optional<WideString> GetDefaultCData(XFA_Attribute attr) const; + absl::optional<XFA_AttributeValue> GetDefaultEnum(XFA_Attribute attr) const;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/parser/cxfa_node.h
215
216
217
218
219
220
221
222
223
224
CXFA_Node* GetOneChildNamed(WideStringView wsName); CXFA_Node* GetOneChildOfClass(WideStringView wsClass); std::vector<CXFA_Node*> GetSiblings(bool bIsClassName); size_t GetIndex(bool bIsProperty, bool bIsClassIndex); size_t GetIndexByName(); size_t GetIndexByClassName(); CXFA_Node* GetInstanceMgrOfSubform();
+ show +
225
226
227
228
229
Optional<bool> GetDefaultBoolean(XFA_Attribute attr) const; Optional<int32_t> GetDefaultInteger(XFA_Attribute attr) const; Optional<CXFA_Measurement> GetDefaultMeasurement(XFA_Attribute attr) const; Optional<WideString> GetDefaultCData(XFA_Attribute attr) const; Optional<XFA_AttributeValue> GetDefaultEnum(XFA_Attribute attr) const;
+ show +
230
231
232
233
234
235
236
237
238
239
bool IsOpenAccess() const; CXFA_Occur* GetOccurIfExists(); CXFA_Border* GetBorderIfExists() const; CXFA_Border* GetOrCreateBorderIfPossible(); CXFA_Caption* GetCaptionIfExists() const; CXFA_Font* GetFontIfExists() const; CXFA_Font* GetOrCreateFontIfPossible();

[CVE-2023-40093_1.diff] cxfa_viewlayoutprocessor.cpp #7
-void ReorderLayoutItemToTail(const RetainPtr<CXFA_LayoutItem>& pLayoutItem) { - CXFA_LayoutItem* pParentLayoutItem = pLayoutItem->GetParent(); - if (!pParentLayoutItem) - return; - - pParentLayoutItem->RemoveChild(pLayoutItem); - pParentLayoutItem->AppendLastChild(pLayoutItem); -} -
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
151
152
153
154
155
156
157
158
159
160
pNotify->OnLayoutItemAdded(pDocLayout, pViewItem, nPageIndex, dwStatus); for (CXFA_LayoutItem* pChild = pViewItem->GetFirstChild(); pChild; pChild = pChild->GetNextSibling()) { if (pChild->IsContentLayoutItem()) { SyncContainer(pNotify, pDocLayout, pChild, dwRelevantContainer, bVisibleItem, nPageIndex); } } }
+ show +
161
162
163
164
165
166
167
void ReorderLayoutItemToTail(const RetainPtr<CXFA_LayoutItem>& pLayoutItem) { CXFA_LayoutItem* pParentLayoutItem = pLayoutItem->GetParent(); if (!pParentLayoutItem) return; pParentLayoutItem->RemoveChild(pLayoutItem); pParentLayoutItem->AppendLastChild(pLayoutItem);
+ show +
168
169
170
171
172
173
174
175
176
177
} CXFA_Node* ResolveBreakTarget(CXFA_Node* pPageSetRoot, bool bNewExprStyle, WideString* pTargetAll) { if (!pPageSetRoot) return nullptr; CXFA_Document* pDocument = pPageSetRoot->GetDocument(); if (pTargetAll->IsEmpty())

[CVE-2023-40093_1.diff] cxfa_layoutitem.cpp #4
-CXFA_LayoutItem::~CXFA_LayoutItem() { - CHECK(!GetParent()); - if (m_pFormNode) { - auto* pJSObj = m_pFormNode->JSObject(); - if (pJSObj && pJSObj->GetLayoutItem() == this) - pJSObj->SetLayoutItem(nullptr); - } +CXFA_LayoutItem::~CXFA_LayoutItem() = default; + +void CXFA_LayoutItem::PreFinalize() { + if (!m_pFormNode) + return; + + auto* pJSObj = m_pFormNode->JSObject(); + if (pJSObj && pJSObj->GetLayoutItem() == this) + pJSObj->SetLayoutItem(nullptr); +} + +void CXFA_LayoutItem::Trace(cppgc::Visitor* visitor) const { + GCedTreeNode<CXFA_LayoutItem>::Trace(visitor); + visitor->Trace(m_pFormNode);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/layout/cxfa_layoutitem.cpp
31
32
33
34
35
36
37
38
39
40
if (pLayoutItem->GetFormNode()->GetElementType() == XFA_Element::PageArea) { pNotify->OnPageEvent(ToViewLayoutItem(pLayoutItem.Get()), XFA_PAGEVIEWEVENT_PostRemoved); } pLayoutItem->RemoveSelfIfParented(); } CXFA_LayoutItem::CXFA_LayoutItem(CXFA_Node* pNode, ItemType type) : m_ItemType(type), m_pFormNode(pNode) {}
+ show +
41
42
43
44
45
46
CXFA_LayoutItem::~CXFA_LayoutItem() { CHECK(!GetParent()); if (m_pFormNode) { auto* pJSObj = m_pFormNode->JSObject(); if (pJSObj && pJSObj->GetLayoutItem() == this) pJSObj->SetLayoutItem(nullptr);
+ show +
47
48
49
50
51
52
53
54
55
56
} } CXFA_ViewLayoutItem* CXFA_LayoutItem::AsViewLayoutItem() { return IsViewLayoutItem() ? static_cast<CXFA_ViewLayoutItem*>(this) : nullptr; } const CXFA_ViewLayoutItem* CXFA_LayoutItem::AsViewLayoutItem() const { return IsViewLayoutItem() ? static_cast<const CXFA_ViewLayoutItem*>(this) : nullptr;

[CVE-2023-40093_1.diff] cxfa_contentlayoutprocessor.h #6
- bool JudgePutNextPage( - CXFA_ContentLayoutItem* pParentLayoutItem, - float fChildHeight, - std::vector<RetainPtr<CXFA_ContentLayoutItem>>* pKeepItems); + bool JudgePutNextPage(CXFA_ContentLayoutItem* pParentLayoutItem, + float fChildHeight, + std::vector<CXFA_ContentLayoutItem*>* pKeepItems);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.h
113
114
115
116
117
118
119
120
121
122
XFA_AttributeValue eFlowStrategy, bool bContainerHeightAutoSize, bool bContainerWidthAutoSize, float* fContentCalculatedWidth, float* fContentCalculatedHeight, float* fContentCurRowY, float fContentCurRowHeight, float fContentWidthLimit, bool bRootForceTb); void ProcessUnUseBinds(CXFA_Node* pFormNode);
+ show +
123
124
125
126
bool JudgePutNextPage( CXFA_ContentLayoutItem* pParentLayoutItem, float fChildHeight, std::vector<RetainPtr<CXFA_ContentLayoutItem>>* pKeepItems);
+ show +
127
128
129
130
131
132
133
134
135
136
void DoLayoutPositionedContainer(Context* pContext); void DoLayoutTableContainer(CXFA_Node* pLayoutNode); Result DoLayoutFlowedContainer(bool bUseBreakControl, XFA_AttributeValue eFlowStrategy, float fHeightLimit, float fRealHeight, Context* pContext, bool bRootForceTb); void DoLayoutField();

[CVE-2023-40093_1.diff] cxfa_contentlayoutprocessor.cpp #8
- if (pParaNode && pLayoutChild->GetFirstChild()) { - float fOffHeight = fContentCalculatedHeight - fOldChildHeight; - XFA_AttributeValue eVType = - pParaNode->JSObject()->GetEnum(XFA_Attribute::VAlign); - switch (eVType) { - case XFA_AttributeValue::Middle: - fOffHeight = fOffHeight / 2; - break; - case XFA_AttributeValue::Bottom: - break; - case XFA_AttributeValue::Top: - default: - fOffHeight = 0; - break; - } - if (fOffHeight > 0) { - for (CXFA_LayoutItem* pInnerIter = pLayoutChild->GetFirstChild(); - pInnerIter; pInnerIter = pInnerIter->GetNextSibling()) { - CXFA_ContentLayoutItem* pInnerChild = - pInnerIter->AsContentLayoutItem(); - if (!pInnerChild) - continue; + if (!pParaNode || !pLayoutChild->GetFirstChild()) + continue; - pInnerChild->m_sPos.y += fOffHeight; - } - } + float fOffHeight = fContentCalculatedHeight - fOldChildHeight; + XFA_AttributeValue eVType = + pParaNode->JSObject()->GetEnum(XFA_Attribute::VAlign); + switch (eVType) { + case XFA_AttributeValue::Middle: + fOffHeight = fOffHeight / 2; + break; + case XFA_AttributeValue::Bottom: + break; + case XFA_AttributeValue::Top: + default: + fOffHeight = 0; + break; + } + if (fOffHeight <= 0) + continue; + + for (CXFA_LayoutItem* pInnerIter = pLayoutChild->GetFirstChild(); + pInnerIter; pInnerIter = pInnerIter->GetNextSibling()) { + CXFA_ContentLayoutItem* pInnerChild = pInnerIter->AsContentLayoutItem(); + if (pInnerChild) + pInnerChild->m_sPos.y += fOffHeight;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.cpp
261
262
263
264
265
266
267
268
269
270
if (!pLayoutChild) continue; UpdateWidgetSize(pLayoutChild, &pLayoutChild->m_sSize.width, &fContentCalculatedHeight); float fOldChildHeight = pLayoutChild->m_sSize.height; pLayoutChild->m_sSize.height = fContentCalculatedHeight; CXFA_Para* pParaNode = pLayoutChild->GetFormNode()->GetFirstChildByClass<CXFA_Para>( XFA_Element::Para);
+ show +
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
if (pParaNode && pLayoutChild->GetFirstChild()) { float fOffHeight = fContentCalculatedHeight - fOldChildHeight; XFA_AttributeValue eVType = pParaNode->JSObject()->GetEnum(XFA_Attribute::VAlign); switch (eVType) { case XFA_AttributeValue::Middle: fOffHeight = fOffHeight / 2; break; case XFA_AttributeValue::Bottom: break; case XFA_AttributeValue::Top: default: fOffHeight = 0; break; } if (fOffHeight > 0) { for (CXFA_LayoutItem* pInnerIter = pLayoutChild->GetFirstChild(); pInnerIter; pInnerIter = pInnerIter->GetNextSibling()) { CXFA_ContentLayoutItem* pInnerChild = pInnerIter->AsContentLayoutItem(); if (!pInnerChild) continue; pInnerChild->m_sPos.y += fOffHeight;
+ show +
295
296
297
298
299
300
301
302
303
304
} } } } } if (bContainerWidthAutoSize) { float fChildSuppliedWidth = fCurrentColX; if (fContentWidthLimit < FLT_MAX && fContentWidthLimit > fChildSuppliedWidth) {

[CVE-2023-40093_1.diff] cxfa_contentlayoutprocessor.cpp #33
- for (auto iter = m_ArrayKeepItems.rbegin(); iter != m_ArrayKeepItems.rend(); - iter++) { - AddLeaderAfterSplit(*iter); - fTotalHeight += (*iter)->m_sSize.height; + for (const auto& item : pdfium::base::Reversed(m_ArrayKeepItems)) { + AddLeaderAfterSplit(item); + fTotalHeight += item->m_sSize.height;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.cpp
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
float CXFA_ContentLayoutProcessor::InsertKeepLayoutItems() { if (m_ArrayKeepItems.empty()) return 0; if (!m_pLayoutItem) { m_pLayoutItem = CreateContentLayoutItem(GetFormNode()); m_pLayoutItem->m_sSize.clear(); } float fTotalHeight = 0;
+ show +
1380
1381
1382
1383
for (auto iter = m_ArrayKeepItems.rbegin(); iter != m_ArrayKeepItems.rend(); iter++) { AddLeaderAfterSplit(*iter); fTotalHeight += (*iter)->m_sSize.height;
+ show +
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
} m_ArrayKeepItems.clear(); return fTotalHeight; } bool CXFA_ContentLayoutProcessor::ProcessKeepForSplit( CXFA_ContentLayoutProcessor* pChildProcessor, Result eRetValue, std::vector<RetainPtr<CXFA_ContentLayoutItem>>* rgCurLineLayoutItem,

[CVE-2023-40093_1.diff] cxfa_contentlayoutprocessor.cpp #46
- auto pTempProcessor = - pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(pTrailerNode, - nullptr); - InsertFlowedItem(pTempProcessor.get(), bContainerWidthAutoSize, + auto* pTempProcessor = + cppgc::MakeGarbageCollected<CXFA_ContentLayoutProcessor>( + GetHeap()->GetAllocationHandle(), GetHeap(), pTrailerNode, + nullptr); + + InsertFlowedItem(pTempProcessor, bContainerWidthAutoSize,
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.cpp
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
m_pViewLayoutProcessor->ProcessBreakAfter(m_pCurChildNode); if (!break_data.has_value() || GetFormNode()->GetElementType() == XFA_Element::Form) { break; } CXFA_Node* pLeaderNode = break_data.value().pLeader; CXFA_Node* pTrailerNode = break_data.value().pTrailer; bool bCreatePage = break_data.value().bCreatePage; if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) {
+ show +
1676
1677
1678
1679
auto pTempProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(pTrailerNode, nullptr); InsertFlowedItem(pTempProcessor.get(), bContainerWidthAutoSize,
+ show +
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
bContainerHeightAutoSize, container_size.height, eFlowStrategy, &uCurHAlignState, rgCurLineLayoutItems, false, FLT_MAX, FLT_MAX, fContentWidthLimit, &fContentCurRowY, &fContentCurRowAvailWidth, &fContentCurRowHeight, &bAddedItemInRow, &bForceEndPage, pContext, false); } if (!bCreatePage) { if (JudgeLeaderOrTrailerForOccur(pLeaderNode)) { CalculateRowChildPosition(

[CVE-2023-40093_1.diff] cfwl_edit_embeddertest.cpp #3
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_DragMouseSelection DISABLED_DragMouseSelection -#else -#define MAYBE_DragMouseSelection DragMouseSelection -#endif -TEST_F(CFWLEditEmbedderTest, MAYBE_DragMouseSelection) { +TEST_F(CFWLEditEmbedderTest, DragMouseSelection) { + // TODO(crbug.com/pdfium/11): Fix this test and enable for Skia variants. + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) + return; +
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_edit_embeddertest.cpp
53
54
55
56
57
58
59
60
61
62
// 12 == (2 * strlen(defgh)) + 2 (for \0\0) EXPECT_EQ(12UL, FORM_GetSelectedText(form_handle(), page(), nullptr, 0)); unsigned short buf[128]; unsigned long len = FORM_GetSelectedText(form_handle(), page(), &buf, 128); EXPECT_STREQ(L"defgh", WideString::FromUTF16LE(buf, len).c_str()); } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
63
64
65
66
67
68
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_DragMouseSelection DISABLED_DragMouseSelection #else #define MAYBE_DragMouseSelection DragMouseSelection #endif TEST_F(CFWLEditEmbedderTest, MAYBE_DragMouseSelection) {
+ show +
69
70
71
72
73
74
75
76
77
78
CreateAndInitializeFormPDF("xfa/email_recommended.pdf"); FORM_OnLButtonDown(form_handle(), page(), 0, 115, 58); for (size_t i = 0; i < 10; ++i) FORM_OnChar(form_handle(), page(), 'a' + i, 0); // Mouse selection FORM_OnLButtonDown(form_handle(), page(), 0, 128, 58); FORM_OnMouseMove(form_handle(), page(), FWL_EVENTFLAG_ShiftKey, 152, 58); // 12 == (2 * strlen(defgh)) + 2 (for \0\0)

[CVE-2023-40093_1.diff] cfwl_edit_embeddertest.cpp #4
-// TODO(crbug.com/pdfium/11): Fix this test and enable. -#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) -#define MAYBE_SimpleFill DISABLED_SimpleFill -#else -#define MAYBE_SimpleFill SimpleFill -#endif -TEST_F(CFWLEditEmbedderTest, MAYBE_SimpleFill) { +TEST_F(CFWLEditEmbedderTest, SimpleFill) { + // TODO(crbug.com/pdfium/11): Fix this test and enable for Skia variants. + if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) + return; +
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_edit_embeddertest.cpp
85
86
87
88
89
90
91
92
93
94
// TODO(hnakashima): This is incorrect. Visually 'abcdefgh' are selected. const char kDraggedMD5[] = "f131526c8edd04e44de17b2647ec54c8"; { ScopedFPDFBitmap page_bitmap = RenderLoadedPageWithFlags(page(), FPDF_ANNOT); CompareBitmap(page_bitmap.get(), 612, 792, kDraggedMD5); } } // TODO(crbug.com/pdfium/11): Fix this test and enable.
+ show +
95
96
97
98
99
100
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) #define MAYBE_SimpleFill DISABLED_SimpleFill #else #define MAYBE_SimpleFill SimpleFill #endif TEST_F(CFWLEditEmbedderTest, MAYBE_SimpleFill) {
+ show +
101
102
103
104
105
106
107
108
109
110
CreateAndInitializeFormPDF("xfa/email_recommended.pdf"); const char kBlankMD5[] = "8dda78a3afaf9f7b5210eb81cacc4600"; { ScopedFPDFBitmap page_bitmap = RenderLoadedPageWithFlags(page(), FPDF_ANNOT); CompareBitmap(page_bitmap.get(), 612, 792, kBlankMD5); } FORM_OnLButtonDown(form_handle(), page(), 0, 115, 58); for (size_t i = 0; i < 10; ++i)

[CVE-2023-40093_1.diff] BUILD.gn #4
+ configs += [ + "../../:pdfium_strict_config", + "../../:pdfium_noshorten_config", + "../:xfa_warnings", + ] + "../../fxjs:gc", - "../fgas", - "../fxgraphics", - ] - configs += [ - "../../:pdfium_core_config", - "../:xfa_warnings", + "../fgas/font", + "../fgas/graphics", + deps = [ + ":fwl", + "../../core/fxge", + "../../fxjs:gc", + ]
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/BUILD.gn
107
108
109
110
111
112
113
114
115
116
"theme/cfwl_scrollbartp.h", "theme/cfwl_utils.h", "theme/cfwl_widgettp.cpp", "theme/cfwl_widgettp.h", ] deps = [ "../../core/fxcrt", "../../core/fxge", "../../fxbarcode", "../fde",
+ show +
117
118
119
120
121
122
"../fgas", "../fxgraphics", ] configs += [ "../../:pdfium_core_config", "../:xfa_warnings",
+ show +
123
124
125
126
127
128
129
130
] visibility = [ "../../*" ] } pdfium_embeddertest_source_set("embeddertests") { sources = [ "cfwl_edit_embeddertest.cpp" ] pdfium_root_dir = "../../" }

[CVE-2023-40093_1.diff] cfwl_combobox.cpp #2
-#include <algorithm> -#include <memory> -#include <utility> - -#include "third_party/base/ptr_util.h" +#include "v8/include/cppgc/visitor.h"
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_monthcalendar.cpp
1
2
3
4
5
6
7
8
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "xfa/fwl/cfwl_monthcalendar.h"
+ show +
9
10
11
12
13
#include <algorithm> #include <memory> #include <utility> #include "third_party/base/ptr_util.h"
+ show +
14
15
16
17
18
19
20
21
22
23
#include "third_party/base/stl_util.h" #include "xfa/fde/cfde_textout.h" #include "xfa/fwl/cfwl_datetimepicker.h" #include "xfa/fwl/cfwl_messagemouse.h" #include "xfa/fwl/cfwl_notedriver.h" #include "xfa/fwl/cfwl_themebackground.h" #include "xfa/fwl/cfwl_themetext.h" #include "xfa/fwl/ifwl_themeprovider.h" #define MONTHCAL_HSEP_HEIGHT 1
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_listbox.cpp
1
2
3
4
5
6
7
8
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "xfa/fwl/cfwl_listbox.h"
+ show +
9
10
11
12
13
#include <algorithm> #include <memory> #include <utility> #include "third_party/base/ptr_util.h"
+ show +
14
15
16
17
18
19
20
21
22
23
#include "third_party/base/stl_util.h" #include "xfa/fde/cfde_textout.h" #include "xfa/fwl/cfwl_app.h" #include "xfa/fwl/cfwl_messagekey.h" #include "xfa/fwl/cfwl_messagemouse.h" #include "xfa/fwl/cfwl_messagemousewheel.h" #include "xfa/fwl/cfwl_themebackground.h" #include "xfa/fwl/cfwl_themepart.h" #include "xfa/fwl/cfwl_themetext.h" #include "xfa/fwl/fwl_widgetdef.h"
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_combobox.cpp
1
2
3
4
5
6
7
8
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "xfa/fwl/cfwl_combobox.h"
+ show +
9
10
11
12
13
#include <algorithm> #include <memory> #include <utility> #include "third_party/base/ptr_util.h"
+ show +
14
15
16
17
18
19
20
21
22
23
#include "xfa/fde/cfde_texteditengine.h" #include "xfa/fde/cfde_textout.h" #include "xfa/fwl/cfwl_app.h" #include "xfa/fwl/cfwl_event.h" #include "xfa/fwl/cfwl_eventselectchanged.h" #include "xfa/fwl/cfwl_listbox.h" #include "xfa/fwl/cfwl_messagekey.h" #include "xfa/fwl/cfwl_messagekillfocus.h" #include "xfa/fwl/cfwl_messagemouse.h" #include "xfa/fwl/cfwl_messagesetfocus.h"
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_scrollbar.cpp
1
2
3
4
5
6
7
8
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "xfa/fwl/cfwl_scrollbar.h"
+ show +
9
10
11
12
13
#include <algorithm> #include <memory> #include <utility> #include "third_party/base/ptr_util.h"
+ show +
14
15
16
17
18
19
20
21
22
23
#include "third_party/base/stl_util.h" #include "xfa/fwl/cfwl_app.h" #include "xfa/fwl/cfwl_messagemouse.h" #include "xfa/fwl/cfwl_messagemousewheel.h" #include "xfa/fwl/cfwl_notedriver.h" #include "xfa/fwl/cfwl_themebackground.h" #include "xfa/fwl/cfwl_themepart.h" #include "xfa/fwl/ifwl_themeprovider.h" #define FWL_SCROLLBAR_Elapse 500

[CVE-2023-40093_1.diff] cfwl_monthcalendar.cpp #3
-#define MONTHCAL_HSEP_HEIGHT 1 -#define MONTHCAL_HMARGIN 3 -#define MONTHCAL_VMARGIN 2 -#define MONTHCAL_ROWS 9 -#define MONTHCAL_COLUMNS 7 -#define MONTHCAL_HEADER_BTN_VMARGIN 7 -#define MONTHCAL_HEADER_BTN_HMARGIN 5 - +constexpr float kMonthCalHSepHeight = 1.0f; +constexpr float kMonthCalHMargin = 3.0f; +constexpr float kMonthCalVMargin = 2.0f; +constexpr float kMonthCalRows = 9.0f; +constexpr float kMonthCalColumns = 7.0f; +constexpr float kMonthCalHeaderBtnVMargin = 7.0f; +constexpr float kMonthCalHeaderBtnHMargin = 5.0f; +
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_monthcalendar.cpp
13
14
15
16
17
18
19
20
21
22
#include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h" #include "xfa/fde/cfde_textout.h" #include "xfa/fwl/cfwl_datetimepicker.h" #include "xfa/fwl/cfwl_messagemouse.h" #include "xfa/fwl/cfwl_notedriver.h" #include "xfa/fwl/cfwl_themebackground.h" #include "xfa/fwl/cfwl_themetext.h" #include "xfa/fwl/ifwl_themeprovider.h"
+ show +
23
24
25
26
27
28
29
#define MONTHCAL_HSEP_HEIGHT 1 #define MONTHCAL_HMARGIN 3 #define MONTHCAL_VMARGIN 2 #define MONTHCAL_ROWS 9 #define MONTHCAL_COLUMNS 7 #define MONTHCAL_HEADER_BTN_VMARGIN 7 #define MONTHCAL_HEADER_BTN_HMARGIN 5
+ show +
30
31
32
33
34
35
36
37
38
39
namespace { WideString GetAbbreviatedDayOfWeek(int day) { switch (day) { case 0: return L"Sun"; case 1: return L"Mon"; case 2:

[CVE-2023-40093_1.diff] cfwl_monthcalendar.cpp #4
-CFWL_MonthCalendar::CFWL_MonthCalendar( - const CFWL_App* app, - std::unique_ptr<CFWL_WidgetProperties> properties, - CFWL_Widget* pOuter) - : CFWL_Widget(app, std::move(properties), pOuter) {} +CFWL_MonthCalendar::CFWL_MonthCalendar(CFWL_App* app, + const Properties& properties, + CFWL_Widget* pOuter) + : CFWL_Widget(app, properties, pOuter) {}
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_monthcalendar.cpp
79
80
81
82
83
84
85
86
87
88
case 11: return L"December"; default: NOTREACHED(); return L""; } } } // namespace
+ show +
89
90
91
92
93
CFWL_MonthCalendar::CFWL_MonthCalendar( const CFWL_App* app, std::unique_ptr<CFWL_WidgetProperties> properties, CFWL_Widget* pOuter) : CFWL_Widget(app, std::move(properties), pOuter) {}
+ show +
94
95
96
97
98
99
100
101
102
103
CFWL_MonthCalendar::~CFWL_MonthCalendar() = default; FWL_Type CFWL_MonthCalendar::GetClassID() const { return FWL_Type::MonthCalendar; } CFX_RectF CFWL_MonthCalendar::GetAutosizedWidgetRect() { CFX_SizeF fs = CalcSize(); CFX_RectF rect(0, 0, fs.width, fs.height);

[CVE-2023-40093_1.diff] fwl_widgetdef.h #2
-#define FWL_WGTSTYLE_OverLapper 0 -#define FWL_WGTSTYLE_Popup (1L << 0) -#define FWL_WGTSTYLE_Child (2L << 0) -#define FWL_WGTSTYLE_WindowTypeMask (3L << 0) -#define FWL_WGTSTYLE_Border (1L << 2) -#define FWL_WGTSTYLE_VScroll (1L << 11) -#define FWL_WGTSTYLE_Group (1L << 22) -#define FWL_WGTSTYLE_NoBackground (1L << 28) +#include <stdint.h> -#define FWL_WGTSTATE_Disabled (1L << 2) -#define FWL_WGTSTATE_Focused (1L << 4) -#define FWL_WGTSTATE_Invisible (1L << 5) -#define FWL_WGTSTATE_MAX (6) - -// Same as enum FWL_VKEYCODE in public/fpdf_fwlevent.h, but duplicated to keep -// xfa/fwl standalone. +// Same as enum FWL_VKEYCODE in public/fpdf_fwlevent.h, but duplicated here +// to keep xfa/fwl standalone.
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/fwl_widgetdef.h
1
2
3
4
5
6
7
8
9
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef XFA_FWL_FWL_WIDGETDEF_H_ #define XFA_FWL_FWL_WIDGETDEF_H_
+ show +
10
11
12
13
14
15
16
17
18
19
20
21
22
#define FWL_WGTSTYLE_OverLapper 0 #define FWL_WGTSTYLE_Popup (1L << 0) #define FWL_WGTSTYLE_Child (2L << 0) #define FWL_WGTSTYLE_WindowTypeMask (3L << 0) #define FWL_WGTSTYLE_Border (1L << 2) #define FWL_WGTSTYLE_VScroll (1L << 11) #define FWL_WGTSTYLE_Group (1L << 22) #define FWL_WGTSTYLE_NoBackground (1L << 28) #define FWL_WGTSTATE_Disabled (1L << 2) #define FWL_WGTSTATE_Focused (1L << 4) #define FWL_WGTSTATE_Invisible (1L << 5) #define FWL_WGTSTATE_MAX (6)
+ show +
23
24
25
26
27
28
29
30
31
32
// Same as enum FWL_VKEYCODE in public/fpdf_fwlevent.h, but duplicated to keep // xfa/fwl standalone. enum XFA_FWL_VKEYCODE { XFA_FWL_VKEY_Back = 0x08, XFA_FWL_VKEY_Tab = 0x09, XFA_FWL_VKEY_NewLine = 0x0A, XFA_FWL_VKEY_Clear = 0x0C, XFA_FWL_VKEY_Return = 0x0D, XFA_FWL_VKEY_Shift = 0x10,

[CVE-2023-40093_1.diff] cfwl_picturebox.cpp #2
-#include <memory> +CFWL_PictureBox::CFWL_PictureBox(CFWL_App* app) + : CFWL_Widget(app, CFWL_Widget::Properties(), nullptr) {} -#include "third_party/base/ptr_util.h" - -CFWL_PictureBox::CFWL_PictureBox(const CFWL_App* app) - : CFWL_Widget(app, pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr) { -} - -CFWL_PictureBox::~CFWL_PictureBox() {} +CFWL_PictureBox::~CFWL_PictureBox() = default;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_picturebox.cpp
1
2
3
4
5
6
7
8
// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "xfa/fwl/cfwl_picturebox.h"
+ show +
9
10
11
12
13
14
15
16
17
#include <memory> #include "third_party/base/ptr_util.h" CFWL_PictureBox::CFWL_PictureBox(const CFWL_App* app) : CFWL_Widget(app, pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr) { } CFWL_PictureBox::~CFWL_PictureBox() {}
+ show +
18
19
20
21
22
23
24
25
26
27
FWL_Type CFWL_PictureBox::GetClassID() const { return FWL_Type::PictureBox; } void CFWL_PictureBox::Update() { if (IsLocked()) return; if (!m_pProperties->m_pThemeProvider) m_pProperties->m_pThemeProvider = GetAvailableTheme();

[CVE-2023-40093_1.diff] cfwl_scrollbar.h #4
- bool IsVertical() const { - return !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_SCB_Vert); - } - void DrawTrack(CXFA_Graphics* pGraphics, - IFWL_ThemeProvider* pTheme, - bool bLower, - const CFX_Matrix* pMatrix); - void DrawArrowBtn(CXFA_Graphics* pGraphics, - IFWL_ThemeProvider* pTheme, - bool bMinBtn, - const CFX_Matrix* pMatrix); - void DrawThumb(CXFA_Graphics* pGraphics, - IFWL_ThemeProvider* pTheme, - const CFX_Matrix* pMatrix); + CFWL_ScrollBar(CFWL_App* app, + const Properties& properties, + CFWL_Widget* pOuter); + + bool IsVertical() const { return !!(GetStyleExts() & FWL_STYLEEXT_SCB_Vert); } + void DrawUpperTrack(CFGAS_GEGraphics* pGraphics, const CFX_Matrix& mtMatrix); + void DrawLowerTrack(CFGAS_GEGraphics* pGraphics, const CFX_Matrix& mtMatrix); + void DrawMaxArrowBtn(CFGAS_GEGraphics* pGraphics, const CFX_Matrix& mtMatrix); + void DrawMinArrowBtn(CFGAS_GEGraphics* pGraphics, const CFX_Matrix& mtMatrix); + void DrawThumb(CFGAS_GEGraphics* pGraphics, const CFX_Matrix& mtMatrix);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_scrollbar.h
52
53
54
55
56
57
58
59
60
61
} float GetPageSize() const { return m_fPageSize; } void SetPageSize(float fPageSize) { m_fPageSize = fPageSize; } float GetStepSize() const { return m_fStepSize; } void SetStepSize(float fStepSize) { m_fStepSize = fStepSize; } float GetPos() const { return m_fPos; } void SetPos(float fPos) { m_fPos = fPos; } void SetTrackPos(float fTrackPos); private:
+ show +
62
63
64
65
66
67
68
69
70
71
72
73
74
75
bool IsVertical() const { return !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_SCB_Vert); } void DrawTrack(CXFA_Graphics* pGraphics, IFWL_ThemeProvider* pTheme, bool bLower, const CFX_Matrix* pMatrix); void DrawArrowBtn(CXFA_Graphics* pGraphics, IFWL_ThemeProvider* pTheme, bool bMinBtn, const CFX_Matrix* pMatrix); void DrawThumb(CXFA_Graphics* pGraphics, IFWL_ThemeProvider* pTheme, const CFX_Matrix* pMatrix);
+ show +
76
77
78
79
80
81
82
83
84
85
void Layout(); void CalcButtonLen(); CFX_RectF CalcMinButtonRect(); CFX_RectF CalcMaxButtonRect(); CFX_RectF CalcThumbButtonRect(const CFX_RectF& rtThumbRect); CFX_RectF CalcMinTrackRect(const CFX_RectF& rtMinRect); CFX_RectF CalcMaxTrackRect(const CFX_RectF& rtMaxRect); float GetTrackPointPos(const CFX_PointF& point); bool SendEvent();

[CVE-2023-40093_1.diff] cfwl_notedriver.cpp #6
-#if !defined(OS_MACOSX) - if (pMsg->m_dwCmd == FWL_KeyCommand::KeyDown && - pMsg->m_dwKeyCode == XFA_FWL_VKEY_Tab) { - CFWL_WidgetMgr* pWidgetMgr = pMessageForm->GetOwnerApp()->GetWidgetMgr(); - CFWL_Widget* pForm = GetMessageForm(pMsg->GetDstTarget()); - CFWL_Widget* pFocus = m_pFocus.Get(); - if (m_pFocus && pWidgetMgr->GetSystemFormWidget(m_pFocus.Get()) != pForm) - pFocus = nullptr; - - CFWL_Widget* pNextTabStop = nullptr; - if (pForm) { - pNextTabStop = CFWL_WidgetMgr::NextTab(pForm, pFocus); - if (!pNextTabStop) - pNextTabStop = CFWL_WidgetMgr::NextTab(pForm, nullptr); - } - if (pNextTabStop == pFocus) - return true; - if (pNextTabStop) - SetFocus(pNextTabStop); +#if !BUILDFLAG(IS_APPLE) + if (pMsg->m_dwCmd == CFWL_MessageKey::KeyCommand::kKeyDown && + pMsg->m_dwKeyCodeOrChar == XFA_FWL_VKEY_Tab) {
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_notedriver.cpp
158
159
160
161
162
163
164
165
166
167
bool CFWL_NoteDriver::DoKillFocus(CFWL_Message* pMessage, CFWL_Widget* pMessageForm) { if (m_pFocus == pMessage->GetDstTarget()) m_pFocus = nullptr; return true; } bool CFWL_NoteDriver::DoKey(CFWL_Message* pMessage, CFWL_Widget* pMessageForm) { CFWL_MessageKey* pMsg = static_cast<CFWL_MessageKey*>(pMessage);
+ show +
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#if !defined(OS_MACOSX) if (pMsg->m_dwCmd == FWL_KeyCommand::KeyDown && pMsg->m_dwKeyCode == XFA_FWL_VKEY_Tab) { CFWL_WidgetMgr* pWidgetMgr = pMessageForm->GetOwnerApp()->GetWidgetMgr(); CFWL_Widget* pForm = GetMessageForm(pMsg->GetDstTarget()); CFWL_Widget* pFocus = m_pFocus.Get(); if (m_pFocus && pWidgetMgr->GetSystemFormWidget(m_pFocus.Get()) != pForm) pFocus = nullptr; CFWL_Widget* pNextTabStop = nullptr; if (pForm) { pNextTabStop = CFWL_WidgetMgr::NextTab(pForm, pFocus); if (!pNextTabStop) pNextTabStop = CFWL_WidgetMgr::NextTab(pForm, nullptr); } if (pNextTabStop == pFocus) return true; if (pNextTabStop) SetFocus(pNextTabStop);
+ show +
187
188
189
190
191
192
193
194
195
196
return true; } #endif if (m_pFocus) { pMsg->SetDstTarget(m_pFocus.Get()); return true; } if (pMsg->m_dwCmd == FWL_KeyCommand::KeyDown &&

[CVE-2023-40093_1.diff] cfwl_edit.cpp #16
- IFWL_ThemeProvider* theme = GetAvailableTheme(); - CFWL_ThemePart part; - part.m_pWidget = this; - - if (!theme) { - m_fFontSize = FWLTHEME_CAPACITY_FontSize; - return; - } + IFWL_ThemeProvider* theme = GetThemeProvider(); + CFWL_ThemePart part(CFWL_ThemePart::Part::kNone, this);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_edit.cpp
521
522
523
524
525
526
527
528
529
530
m_pEditEngine->LimitVerticalScroll( (m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll) == 0 && (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_AutoVScroll) == 0); } else { m_pEditEngine->EnableMultiLine(false); m_pEditEngine->EnableLineWrap(false); m_pEditEngine->LimitVerticalScroll(false); } m_pEditEngine->LimitHorizontalScroll(!auto_hscroll);
+ show +
531
532
533
534
535
536
537
IFWL_ThemeProvider* theme = GetAvailableTheme(); CFWL_ThemePart part; part.m_pWidget = this; if (!theme) { m_fFontSize = FWLTHEME_CAPACITY_FontSize; return;
+ show +
538
539
540
541
542
543
544
545
546
547
} m_fFontSize = theme->GetFontSize(part); RetainPtr<CFGAS_GEFont> pFont = theme->GetFont(part); if (!pFont) return; m_pEditEngine->SetFont(pFont); m_pEditEngine->SetFontColor(theme->GetTextColor(part)); m_pEditEngine->SetFontSize(m_fFontSize);

[CVE-2023-40093_1.diff] cfwl_scrollbar.cpp #7
- return CFX_RectF(m_rtClient.left, m_rtMaxBtn.bottom(), m_rtClient.width, - 0); + return CFX_RectF(m_ClientRect.left, m_MaxBtnRect.bottom(), + m_ClientRect.width, 0); - return CFX_RectF(m_rtMaxBtn.right(), m_rtClient.top, 0, m_rtClient.height); + return CFX_RectF(m_MaxBtnRect.right(), m_ClientRect.top, 0, + m_ClientRect.height); - CFX_RectF rtClient = m_rtClient; + CFX_RectF rtClient = m_ClientRect;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_scrollbar.cpp
171
172
173
174
175
176
177
178
179
180
if (m_bMinSize) { rect.left = rtThumb.left; rect.top = rtThumb.top; return rect; } float fRange = m_fRangeMax - m_fRangeMin; if (fRange < 0) { if (IsVertical()) {
+ show +
181
182
183
184
185
186
187
return CFX_RectF(m_rtClient.left, m_rtMaxBtn.bottom(), m_rtClient.width, 0); } return CFX_RectF(m_rtMaxBtn.right(), m_rtClient.top, 0, m_rtClient.height); } CFX_RectF rtClient = m_rtClient;
+ show +
188
189
190
191
192
193
194
195
196
197
float fLength = IsVertical() ? rtClient.height : rtClient.width; float fSize = m_fButtonLen; fLength -= fSize * 2.0f; if (fLength < fSize) fLength = 0.0f; float fThumbSize = fLength * fLength / (fRange + fLength); fThumbSize = std::max(fThumbSize, kMinThumbSize); float fDiff = std::max(fLength - fThumbSize, 0.0f);

[CVE-2023-40093_1.diff] cfwl_scrollbar.cpp #9
- float iy = (m_rtThumb.top + m_rtThumb.bottom()) / 2; - return CFX_RectF(m_rtClient.left, iy, m_rtClient.width, - m_rtClient.bottom() - iy); + float iy = (m_ThumbRect.top + m_ThumbRect.bottom()) / 2; + return CFX_RectF(m_ClientRect.left, iy, m_ClientRect.width, + m_ClientRect.bottom() - iy); - float ix = (m_rtThumb.left + m_rtThumb.right()) / 2; - return CFX_RectF(ix, m_rtClient.top, m_rtClient.height - ix, - m_rtClient.height); + float ix = (m_ThumbRect.left + m_ThumbRect.right()) / 2; + return CFX_RectF(ix, m_ClientRect.top, m_ClientRect.height - ix, + m_ClientRect.height);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_scrollbar.cpp
232
233
234
235
236
237
238
239
240
241
rect.height = m_rtClient.height; } return rect; } CFX_RectF CFWL_ScrollBar::CalcMaxTrackRect(const CFX_RectF& rtMaxRect) { if (m_bMinSize) return CFX_RectF(rtMaxRect.TopLeft(), 0, 0); if (IsVertical()) {
+ show +
242
243
244
245
246
247
248
249
float iy = (m_rtThumb.top + m_rtThumb.bottom()) / 2; return CFX_RectF(m_rtClient.left, iy, m_rtClient.width, m_rtClient.bottom() - iy); } float ix = (m_rtThumb.left + m_rtThumb.right()) / 2; return CFX_RectF(ix, m_rtClient.top, m_rtClient.height - ix, m_rtClient.height);
+ show +
250
251
252
253
254
255
256
257
258
259
} float CFWL_ScrollBar::GetTrackPointPos(const CFX_PointF& point) { CFX_PointF diff = point - m_cpTrackPoint; float fRange = m_fRangeMax - m_fRangeMin; float fPos; if (IsVertical()) { fPos = fRange * diff.y / (m_rtMaxBtn.top - m_rtMinBtn.bottom() - m_rtThumb.height);

[CVE-2023-40093_1.diff] cfwl_widgetmgr.cpp #3
- pItem = pItem->pChild; - while (pItem && pItem->pNext) - pItem = pItem->pNext; - return pItem ? pItem->pWidget : nullptr; -} - -CFWL_Widget* CFWL_WidgetMgr::GetSystemFormWidget(CFWL_Widget* pWidget) const { - Item* pItem = GetWidgetMgrItem(pWidget); - while (pItem) { - if (IsAbleNative(pItem->pWidget)) - return pItem->pWidget; - pItem = pItem->pParent; - } - return nullptr; -} - -void CFWL_WidgetMgr::AppendWidget(CFWL_Widget* pWidget) { - Item* pItem = GetWidgetMgrItem(pWidget); - if (!pItem) - return; - if (!pItem->pParent) - return; - - Item* pChild = pItem->pParent->pChild; - int32_t i = 0; - while (pChild) { - if (pChild == pItem) { - if (pChild->pPrevious) - pChild->pPrevious->pNext = pChild->pNext; - if (pChild->pNext) - pChild->pNext->pPrevious = pChild->pPrevious; - if (pItem->pParent->pChild == pItem) - pItem->pParent->pChild = pItem->pNext; - - pItem->pNext = nullptr; - pItem->pPrevious = nullptr; - break; - } - if (!pChild->pNext) - break; - - pChild = pChild->pNext; - ++i; - } - - pChild = pItem->pParent->pChild; - if (pChild) { - while (pChild->pNext) - pChild = pChild->pNext; - - pChild->pNext = pItem; - pItem->pPrevious = pChild; - } else { - pItem->pParent->pChild = pItem; - pItem->pPrevious = nullptr; - } - pItem->pNext = nullptr; + Item* pChild = pItem->GetLastChild(); + return pChild ? pChild->pWidget : nullptr;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fwl/cfwl_widgetmgr.cpp
69
70
71
72
73
74
75
76
77
78
CFWL_Widget* CFWL_WidgetMgr::GetFirstChildWidget(CFWL_Widget* pWidget) const { Item* pItem = GetWidgetMgrItem(pWidget); return pItem && pItem->pChild ? pItem->pChild->pWidget : nullptr; } CFWL_Widget* CFWL_WidgetMgr::GetLastChildWidget(CFWL_Widget* pWidget) const { Item* pItem = GetWidgetMgrItem(pWidget); if (!pItem) return nullptr;
+ show +
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
pItem = pItem->pChild; while (pItem && pItem->pNext) pItem = pItem->pNext; return pItem ? pItem->pWidget : nullptr; } CFWL_Widget* CFWL_WidgetMgr::GetSystemFormWidget(CFWL_Widget* pWidget) const { Item* pItem = GetWidgetMgrItem(pWidget); while (pItem) { if (IsAbleNative(pItem->pWidget)) return pItem->pWidget; pItem = pItem->pParent; } return nullptr; } void CFWL_WidgetMgr::AppendWidget(CFWL_Widget* pWidget) { Item* pItem = GetWidgetMgrItem(pWidget); if (!pItem) return; if (!pItem->pParent) return; Item* pChild = pItem->pParent->pChild; int32_t i = 0; while (pChild) { if (pChild == pItem) { if (pChild->pPrevious) pChild->pPrevious->pNext = pChild->pNext; if (pChild->pNext) pChild->pNext->pPrevious = pChild->pPrevious; if (pItem->pParent->pChild == pItem) pItem->pParent->pChild = pItem->pNext; pItem->pNext = nullptr; pItem->pPrevious = nullptr; break; } if (!pChild->pNext) break; pChild = pChild->pNext; ++i; } pChild = pItem->pParent->pChild; if (pChild) { while (pChild->pNext) pChild = pChild->pNext; pChild->pNext = pItem; pItem->pPrevious = pChild; } else { pItem->pParent->pChild = pItem; pItem->pPrevious = nullptr; } pItem->pNext = nullptr;
+ show +
136
137
138
139
140
141
142
143
144
145
} void CFWL_WidgetMgr::RepaintWidget(CFWL_Widget* pWidget, const CFX_RectF& rect) { CFWL_Widget* pNative = pWidget; CFX_RectF transformedRect = rect; CFWL_Widget* pOuter = pWidget->GetOuter(); while (pOuter) { CFX_RectF rtTemp = pNative->GetWidgetRect(); transformedRect.left += rtTemp.left;

[CVE-2023-40093_1.diff] cfgas_fontmgr.cpp #11
- return x ? x->wBitField : 999; + return x ? x->wBitField : FGAS_FONTUSB::kNoBitField; -inline uint8_t GetUInt8(const uint8_t* p) { - return p[0]; -} - -inline uint16_t GetUInt16(const uint8_t* p) { - return static_cast<uint16_t>(p[0] << 8 | p[1]); +uint16_t ReadUInt16FromSpanAtOffset(pdfium::span<const uint8_t> data, + size_t offset) { + const uint8_t* p = &data[offset]; + return FXSYS_UINT16_GET_MSBFIRST(p);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fgas/font/cfgas_fontmgr.cpp
325
326
327
328
329
330
331
332
333
334
uint16_t FX_GetCodePageBit(uint16_t wCodePage) { for (size_t i = 0; i < FX_ArraySize(g_CodePages); ++i) { if (g_CodePages[i] == wCodePage) return static_cast<uint16_t>(i); } return static_cast<uint16_t>(-1); } uint16_t FX_GetUnicodeBit(wchar_t wcUnicode) { const FGAS_FONTUSB* x = FGAS_GetUnicodeBitField(wcUnicode);
+ show +
335
336
337
338
339
340
341
342
343
return x ? x->wBitField : 999; } inline uint8_t GetUInt8(const uint8_t* p) { return p[0]; } inline uint16_t GetUInt16(const uint8_t* p) { return static_cast<uint16_t>(p[0] << 8 | p[1]);
+ show +
344
345
346
347
348
349
350
351
352
353
} extern "C" { unsigned long ftStreamRead(FXFT_StreamRec* stream, unsigned long offset, unsigned char* buffer, unsigned long count) { if (count == 0) return 0;

[CVE-2023-40093_1.diff] cfgas_fontmgr.cpp #14
- USB[0] = pOS2->ulUnicodeRange1; - USB[1] = pOS2->ulUnicodeRange2; - USB[2] = pOS2->ulUnicodeRange3; - USB[3] = pOS2->ulUnicodeRange4; - CSB[0] = pOS2->ulCodePageRange1; - CSB[1] = pOS2->ulCodePageRange2; + USB[0] = static_cast<uint32_t>(pOS2->ulUnicodeRange1); + USB[1] = static_cast<uint32_t>(pOS2->ulUnicodeRange2); + USB[2] = static_cast<uint32_t>(pOS2->ulUnicodeRange3); + USB[3] = static_cast<uint32_t>(pOS2->ulUnicodeRange4); + CSB[0] = static_cast<uint32_t>(pOS2->ulCodePageRange1); + CSB[1] = static_cast<uint32_t>(pOS2->ulCodePageRange2);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fgas/font/cfgas_fontmgr.cpp
406
407
408
409
410
411
412
413
414
415
TT_OS2* pOS2 = static_cast<TT_OS2*>(FT_Get_Sfnt_Table(pFace, ft_sfnt_os2)); if (!pOS2) { USB[0] = 0; USB[1] = 0; USB[2] = 0; USB[3] = 0; CSB[0] = 0; CSB[1] = 0; return; }
+ show +
416
417
418
419
420
421
USB[0] = pOS2->ulUnicodeRange1; USB[1] = pOS2->ulUnicodeRange2; USB[2] = pOS2->ulUnicodeRange3; USB[3] = pOS2->ulUnicodeRange4; CSB[0] = pOS2->ulCodePageRange1; CSB[1] = pOS2->ulCodePageRange2;
+ show +
422
423
424
425
426
427
428
429
430
431
} uint32_t GetFlags(FXFT_FaceRec* pFace) { uint32_t flags = 0; if (FXFT_Is_Face_Bold(pFace)) flags |= FXFONT_FORCE_BOLD; if (FXFT_Is_Face_Italic(pFace)) flags |= FXFONT_ITALIC; if (FT_IS_FIXED_WIDTH(pFace)) flags |= FXFONT_FIXED_PITCH;

[CVE-2023-40093_1.diff] cfgas_fontmgr.cpp #22
- uint16_t wCodePage, - uint16_t /* wBitField */) { - std::vector<CFX_FontDescriptorInfo>* sortedFontInfos = - m_Hash2CandidateList[dwHash].get(); - if (!sortedFontInfos) { - auto pNewFonts = pdfium::MakeUnique<std::vector<CFX_FontDescriptorInfo>>(); - sortedFontInfos = pNewFonts.get(); - MatchFonts(sortedFontInfos, wCodePage, dwFontStyles, - WideString(pszFontFamily), wUnicode); - m_Hash2CandidateList[dwHash] = std::move(pNewFonts); + FX_CodePage wCodePage, + uint16_t /* wBitField*/) { + if (!pdfium::Contains(m_Hash2CandidateList, dwHash)) { + m_Hash2CandidateList[dwHash] = + MatchFonts(wCodePage, dwFontStyles, pszFontFamily, wUnicode); - for (const auto& info : *sortedFontInfos) { - CFX_FontDescriptor* pDesc = info.pFont; + for (const auto& info : m_Hash2CandidateList[dwHash]) { + CFGAS_FontDescriptor* pDesc = info.pFont;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fgas/font/cfgas_fontmgr.cpp
647
648
649
650
651
652
653
654
655
656
bool CFGAS_FontMgr::EnumFonts() { return EnumFontsFromFontMapper() || EnumFontsFromFiles(); } RetainPtr<CFGAS_GEFont> CFGAS_FontMgr::GetFontByUnicodeImpl( wchar_t wUnicode, uint32_t dwFontStyles, const wchar_t* pszFontFamily, uint32_t dwHash,
+ show +
657
658
659
660
661
662
663
664
665
666
667
668
669
uint16_t wCodePage, uint16_t /* wBitField */) { std::vector<CFX_FontDescriptorInfo>* sortedFontInfos = m_Hash2CandidateList[dwHash].get(); if (!sortedFontInfos) { auto pNewFonts = pdfium::MakeUnique<std::vector<CFX_FontDescriptorInfo>>(); sortedFontInfos = pNewFonts.get(); MatchFonts(sortedFontInfos, wCodePage, dwFontStyles, WideString(pszFontFamily), wUnicode); m_Hash2CandidateList[dwHash] = std::move(pNewFonts); } for (const auto& info : *sortedFontInfos) { CFX_FontDescriptor* pDesc = info.pFont;
+ show +
670
671
672
673
674
675
676
677
678
679
if (!VerifyUnicodeForFontDescriptor(pDesc, wUnicode)) continue; RetainPtr<CFGAS_GEFont> pFont = LoadFontInternal(pDesc->m_wsFaceName, pDesc->m_nFaceIndex); if (!pFont) continue; pFont->SetLogicalFontStyle(dwFontStyles); m_Hash2Fonts[dwHash].push_back(pFont); return pFont; }

[CVE-2023-40093_1.diff] cfgas_stringformatter.cpp #15
- FX_TIMEZONE tz = pLocale->GetTimeZone(); - if (tz.tzHour != 0 || tz.tzMinute != 0) { - wsResult += tz.tzHour < 0 ? L"-" : L"+"; - wsResult += - WideString::Format(L"%02d:%02d", abs(tz.tzHour), tz.tzMinute); + int tz_minutes = pLocale->GetTimeZoneInMinutes(); + if (tz_minutes != 0) { + wsResult += tz_minutes < 0 ? L"-" : L"+"; + int abs_tz_minutes = abs(tz_minutes); + wsResult += WideString::Format(L"%02d:%02d", abs_tz_minutes / 60, + abs_tz_minutes % 60);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fgas/crt/cfgas_stringformatter.cpp
673
674
675
676
677
678
679
680
681
682
wsResult += NumToString(symbol.GetLength(), minute); } else if (symbol.EqualsASCII("S") || symbol.EqualsASCII("SS")) { wsResult += NumToString(symbol.GetLength(), second); } else if (symbol.EqualsASCII("FFF")) { wsResult += NumToString(3, millisecond); } else if (symbol.EqualsASCII("A")) { wsResult += pLocale->GetMeridiemName(!bPM); } else if (symbol.EqualsASCIINoCase("z")) { if (symbol.EqualsASCII("Z")) wsResult += L"GMT";
+ show +
683
684
685
686
687
FX_TIMEZONE tz = pLocale->GetTimeZone(); if (tz.tzHour != 0 || tz.tzMinute != 0) { wsResult += tz.tzHour < 0 ? L"-" : L"+"; wsResult += WideString::Format(L"%02d:%02d", abs(tz.tzHour), tz.tzMinute);
+ show +
688
689
690
691
692
693
694
695
696
697
} } } return wsResult; } WideString FormatDateTimeInternal(const CFX_DateTime& dt, const WideString& wsDatePattern, const WideString& wsTimePattern, bool bDateFirst,

[CVE-2023-40093_1.diff] cfgas_stringformatter.cpp #19
- uint32_t dwHash = FX_HashCode_GetW(wsCategory.AsStringView(), false); - if (dwHash == FX_LOCALECATEGORY_DateTimeHash) - return FX_LOCALECATEGORY_DateTime; - if (dwHash == FX_LOCALECATEGORY_TextHash) - return FX_LOCALECATEGORY_Text; - if (dwHash == FX_LOCALECATEGORY_NumHash) - return FX_LOCALECATEGORY_Num; - if (dwHash == FX_LOCALECATEGORY_ZeroHash) - return FX_LOCALECATEGORY_Zero; - if (dwHash == FX_LOCALECATEGORY_NullHash) - return FX_LOCALECATEGORY_Null; - if (dwHash == FX_LOCALECATEGORY_DateHash) { - if (eCategory == FX_LOCALECATEGORY_Time) - return FX_LOCALECATEGORY_DateTime; - eCategory = FX_LOCALECATEGORY_Date; - } else if (dwHash == FX_LOCALECATEGORY_TimeHash) { - if (eCategory == FX_LOCALECATEGORY_Date) - return FX_LOCALECATEGORY_DateTime; - eCategory = FX_LOCALECATEGORY_Time; + if (wsCategory == kDateTimeStr) + return Category::kDateTime; + if (wsCategory == kTextStr) + return Category::kText; + if (wsCategory == kNumStr) + return Category::kNum; + if (wsCategory == kZeroStr) + return Category::kZero; + if (wsCategory == kNullStr) + return Category::kNull; + if (wsCategory == kDateStr) { + if (eCategory == Category::kTime) + return Category::kDateTime; + eCategory = Category::kDate; + } else if (wsCategory == kTimeStr) { + if (eCategory == Category::kDate) + return Category::kDateTime; + eCategory = Category::kTime;
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fgas/crt/cfgas_stringformatter.cpp
864
865
866
867
868
869
870
871
872
873
return eCategory; if (m_spPattern[ccf] == '.' || m_spPattern[ccf] == '(') break; if (m_spPattern[ccf] == '{') { bBraceOpen = true; break; } wsCategory += m_spPattern[ccf]; ccf++; }
+ show +
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
uint32_t dwHash = FX_HashCode_GetW(wsCategory.AsStringView(), false); if (dwHash == FX_LOCALECATEGORY_DateTimeHash) return FX_LOCALECATEGORY_DateTime; if (dwHash == FX_LOCALECATEGORY_TextHash) return FX_LOCALECATEGORY_Text; if (dwHash == FX_LOCALECATEGORY_NumHash) return FX_LOCALECATEGORY_Num; if (dwHash == FX_LOCALECATEGORY_ZeroHash) return FX_LOCALECATEGORY_Zero; if (dwHash == FX_LOCALECATEGORY_NullHash) return FX_LOCALECATEGORY_Null; if (dwHash == FX_LOCALECATEGORY_DateHash) { if (eCategory == FX_LOCALECATEGORY_Time) return FX_LOCALECATEGORY_DateTime; eCategory = FX_LOCALECATEGORY_Date; } else if (dwHash == FX_LOCALECATEGORY_TimeHash) { if (eCategory == FX_LOCALECATEGORY_Date) return FX_LOCALECATEGORY_DateTime; eCategory = FX_LOCALECATEGORY_Time;
+ show +
893
894
895
896
897
898
899
900
901
902
} } else if (m_spPattern[ccf] == '}') { bBraceOpen = false; } ccf++; } return eCategory; } WideString CFGAS_StringFormatter::GetTextFormat(

[CVE-2023-40093_1.diff] cfgas_stringformatter_unittest.cpp #4
- SetTZ("UTC+2"); + { + ScopedSetTZ scoped_tz("UTC+2"); - for (size_t i = 0; i < FX_ArraySize(tests); ++i) { - WideString result; - EXPECT_TRUE( - fmt(tests[i].locale, tests[i].pattern) - ->FormatDateTime(tests[i].input, FX_DATETIMETYPE_Time, &result)); - EXPECT_STREQ(tests[i].output, result.c_str()) << " TEST: " << i; + for (size_t i = 0; i < std::size(tests); ++i) { + WideString result; + CFGAS_StringFormatter fmt(tests[i].pattern); + EXPECT_TRUE(fmt.FormatDateTime(Mgr(tests[i].locale), tests[i].input, + CFGAS_StringFormatter::DateTimeType::kTime, + &result)); + EXPECT_STREQ(tests[i].output, result.c_str()) << " TEST: " << i; + } - - SetTZ("UTC");
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp
153
154
155
156
157
158
159
160
161
162
L"11:11:11 o'clock AM GMT-02:00"}, {L"en", L"14:30:59", L"h:MM A", L"2:30 PM"}, {L"en", L"14:30:59", L"HH:MM:SS A Z", L"14:30:59 PM GMT-02:00"}}; // Note, none of the full width time symbols are listed here // as they are not supported. In theory there are the full // width versions of kkk, kkkk, HHH, HHHH, KKK, KKKK, MMM, MMMM, // SSS, SSSS plus 2 more that the spec apparently forgot to // list the symbol. // The z modifier only appends if the TZ is outside of +0
+ show +
163
164
165
166
167
168
169
170
171
172
173
SetTZ("UTC+2"); for (size_t i = 0; i < FX_ArraySize(tests); ++i) { WideString result; EXPECT_TRUE( fmt(tests[i].locale, tests[i].pattern) ->FormatDateTime(tests[i].input, FX_DATETIMETYPE_Time, &result)); EXPECT_STREQ(tests[i].output, result.c_str()) << " TEST: " << i; } SetTZ("UTC");
+ show +
174
175
176
177
178
179
180
181
182
183
} TEST_F(CFGAS_StringFormatterTest, DateTimeFormat) { struct { const wchar_t* locale; const wchar_t* input; const wchar_t* pattern; const wchar_t* output; } tests[] = { {L"en", L"1999-07-16T10:30Z",

[CVE-2023-40093_1.diff] cfde_texteditengine.cpp #6
-CFDE_TextEditEngine::CFDE_TextEditEngine() - : font_color_(0xff000000), - font_size_(10.0f), - line_spacing_(10.0f), - text_length_(0), - gap_position_(0), - gap_size_(kGapSize), - available_width_(kPageWidthMax), - character_limit_(std::numeric_limits<size_t>::max()), - visible_line_count_(1), - next_operation_index_to_undo_(kMaxEditOperations - 1), - next_operation_index_to_insert_(0), - max_edit_operations_(kMaxEditOperations), - character_alignment_(CFX_TxtLineAlignment_Left), - has_character_limit_(false), - is_comb_text_(false), - is_dirty_(false), - validation_enabled_(false), - is_multiline_(false), - is_linewrap_enabled_(false), - limit_horizontal_area_(false), - limit_vertical_area_(false), - password_mode_(false), - password_alias_(L'*'), - has_selection_(false), - selection_({0, 0}) { +CFDE_TextEditEngine::CFDE_TextEditEngine() {
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fde/cfde_texteditengine.cpp
114
115
116
117
118
119
120
121
122
123
return 0; } bool BreakFlagsChanged(int flags, WordBreakProperty previous) { return (flags != 1 || previous != WordBreakProperty::kALetter) && (flags != 2 || previous != WordBreakProperty::kNumeric); } } // namespace
+ show +
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
CFDE_TextEditEngine::CFDE_TextEditEngine() : font_color_(0xff000000), font_size_(10.0f), line_spacing_(10.0f), text_length_(0), gap_position_(0), gap_size_(kGapSize), available_width_(kPageWidthMax), character_limit_(std::numeric_limits<size_t>::max()), visible_line_count_(1), next_operation_index_to_undo_(kMaxEditOperations - 1), next_operation_index_to_insert_(0), max_edit_operations_(kMaxEditOperations), character_alignment_(CFX_TxtLineAlignment_Left), has_character_limit_(false), is_comb_text_(false), is_dirty_(false), validation_enabled_(false), is_multiline_(false), is_linewrap_enabled_(false), limit_horizontal_area_(false), limit_vertical_area_(false), password_mode_(false), password_alias_(L'*'), has_selection_(false), selection_({0, 0}) {
+ show +
150
151
152
153
154
155
156
157
158
159
content_.resize(gap_size_); operation_buffer_.resize(max_edit_operations_); text_break_.SetFontSize(font_size_); text_break_.SetLineBreakTolerance(2.0f); text_break_.SetTabWidth(36); } CFDE_TextEditEngine::~CFDE_TextEditEngine() {}

[CVE-2023-40093_1.diff] cfde_texteditengine.cpp #12
-size_t CFDE_TextEditEngine::GetIndexBefore(size_t pos) { - int32_t bidi_level; - CFX_RectF rect; - // Possible |Layout| triggered by |GetCharacterInfo|. - std::tie(bidi_level, rect) = GetCharacterInfo(pos); - return FX_IsOdd(bidi_level) ? GetIndexRight(pos) : GetIndexLeft(pos); -} -
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fde/cfde_texteditengine.cpp
414
415
416
417
418
419
420
421
422
423
} void CFDE_TextEditEngine::ClearOperationRecords() { for (auto& record : operation_buffer_) record.reset(); next_operation_index_to_undo_ = max_edit_operations_ - 1; next_operation_index_to_insert_ = 0; }
+ show +
424
425
426
427
428
429
size_t CFDE_TextEditEngine::GetIndexBefore(size_t pos) { int32_t bidi_level; CFX_RectF rect; // Possible |Layout| triggered by |GetCharacterInfo|. std::tie(bidi_level, rect) = GetCharacterInfo(pos); return FX_IsOdd(bidi_level) ? GetIndexRight(pos) : GetIndexLeft(pos);
+ show +
430
431
432
433
434
435
436
437
438
439
} size_t CFDE_TextEditEngine::GetIndexLeft(size_t pos) const { if (pos == 0) return 0; --pos; while (pos != 0) { // We want to be on the location just before the \r or \n wchar_t ch = GetChar(pos - 1);

[CVE-2023-40093_1.diff] cfde_texteditengine.cpp #27
- if (static_cast<size_t>(nIndex) >= engine_->GetLength()) - current_position_ = engine_->GetLength(); - else - current_position_ = nIndex; + nIndex = std::min(nIndex, engine_->GetLength()); + current_position_ = pdfium::base::checked_cast<int32_t>(nIndex);
/media/esteban/ACOS/dotOS/external/pdfium/xfa/fde/cfde_texteditengine.cpp
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
--current_position_; else ++current_position_; } wchar_t CFDE_TextEditEngine::Iterator::GetChar() const { return engine_->GetChar(current_position_); } void CFDE_TextEditEngine::Iterator::SetAt(size_t nIndex) {
+ show +
1244
1245
1246
1247
if (static_cast<size_t>(nIndex) >= engine_->GetLength()) current_position_ = engine_->GetLength(); else current_position_ = nIndex;
+ show +
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
} bool CFDE_TextEditEngine::Iterator::IsEOF(bool bPrev) const { return bPrev ? current_position_ == -1 : current_position_ > -1 && static_cast<size_t>(current_position_) == engine_->GetLength(); } size_t CFDE_TextEditEngine::Iterator::FindNextBreakPos(bool bPrev) {

[CVE-2023-40093_1.diff] stream_dict_common.h #2
-// PDF 1.7 spec, table 3.4. -// Entries common to all stream dictionaries. - -// TODO(https://crbug.com/pdfium/1049): Examine all usages of "Length", -// "Filter", and "F". -constexpr char kLength[] = "Length"; -constexpr char kFilter[] = "Filter"; -constexpr char kDecodeParms[] = "DecodeParms"; -constexpr char kF[] = "F"; -// constexpr char kFFilter[] = "FFilter"; -// constexpr char kFDecodeParms[] = "FDecodeParms"; -constexpr char kDL[] = "DL"; +extern const char kLength[]; +extern const char kFilter[]; +extern const char kDecodeParms[]; +extern const char kF[]; +extern const char kDL[];
/media/esteban/ACOS/dotOS/external/pdfium/constants/stream_dict_common.h
6
7
8
9
10
11
12
13
14
15
#define CONSTANTS_STREAM_DICT_COMMON_H_ namespace pdfium { namespace stream { // PDF 1.7 spec, table 3.4. // Entries common to all stream dictionaries. // TODO(https://crbug.com/pdfium/1049): Examine all usages of "Length", // "Filter", and "F".
+ show +
16
17
18
19
20
21
22
constexpr char kLength[] = "Length"; constexpr char kFilter[] = "Filter"; constexpr char kDecodeParms[] = "DecodeParms"; constexpr char kF[] = "F"; // constexpr char kFFilter[] = "FFilter"; // constexpr char kFDecodeParms[] = "FDecodeParms"; constexpr char kDL[] = "DL";
+ show +
23
24
25
26
27
} // namespace stream } // namespace pdfium #endif // CONSTANTS_STREAM_DICT_COMMON_H_

[CVE-2023-40093_1.diff] BUILD.gn #2
- config("fx_freetype_warnings") { - visibility = [ ":*" ] - if (is_clang) { - # open_face_PS_from_sfnt_stream() and open_face_from_buffer() in - # ftbase.h are unused. - # - # ttgload.c casts from unsigned int to unsigned long to void*. - cflags = [ - "-Wno-unused-function", - "-Wno-int-to-void-pointer-cast", - ] - } - } -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
40
41
42
43
44
45
46
47
48
49
"bigint/BigUnsigned.cc", "bigint/BigUnsigned.hh", "bigint/BigUnsignedInABase.cc", "bigint/BigUnsignedInABase.hh", "bigint/NumberlikeArray.hh", ] } } if (pdf_bundle_freetype) {
+ show +
50
51
52
53
54
55
56
57
58
59
60
61
62
config("fx_freetype_warnings") { visibility = [ ":*" ] if (is_clang) { # open_face_PS_from_sfnt_stream() and open_face_from_buffer() in # ftbase.h are unused. # # ttgload.c casts from unsigned int to unsigned long to void*. cflags = [ "-Wno-unused-function", "-Wno-int-to-void-pointer-cast", ] } }
+ show +
63
64
65
66
67
68
69
70
71
72
config("freetype_public_includes_config") { # The relative freetype/include path points to PDFium's custom config. # The absolute path points to whatever copy of FreeType is in # //third_party/freetype. include_dirs = [ "freetype/include", "//third_party/freetype/src/include", ] defines = [

[CVE-2023-40093_1.diff] BUILD.gn #9
- "libopenjpeg20/bio.c", - "libopenjpeg20/cio.c", - "libopenjpeg20/dwt.c", - "libopenjpeg20/event.c", - "libopenjpeg20/function_list.c", - "libopenjpeg20/image.c", - "libopenjpeg20/invert.c", - "libopenjpeg20/j2k.c", - "libopenjpeg20/jp2.c", - "libopenjpeg20/mct.c", - "libopenjpeg20/mqc.c", - "libopenjpeg20/openjpeg.c", - "libopenjpeg20/opj_clock.c", - "libopenjpeg20/pi.c", - "libopenjpeg20/sparse_array.c", - "libopenjpeg20/sparse_array.h", - "libopenjpeg20/t1.c", - "libopenjpeg20/t2.c", - "libopenjpeg20/tcd.c", - "libopenjpeg20/tgt.c", - "libopenjpeg20/thread.c", + "libopenjpeg/bio.c", + "libopenjpeg/cio.c", + "libopenjpeg/dwt.c", + "libopenjpeg/event.c", + "libopenjpeg/function_list.c", + "libopenjpeg/ht_dec.c", + "libopenjpeg/image.c", + "libopenjpeg/invert.c", + "libopenjpeg/j2k.c", + "libopenjpeg/jp2.c", + "libopenjpeg/mct.c", + "libopenjpeg/mqc.c", + "libopenjpeg/openjpeg.c", + + # NOTE: libopenjpeg/opj_clock.c is not used. + "libopenjpeg/opj_malloc.cc", + "libopenjpeg/opj_malloc.h", + "libopenjpeg/pi.c", + "libopenjpeg/sparse_array.c", + "libopenjpeg/sparse_array.h", + "libopenjpeg/t1.c", + "libopenjpeg/t1_ht_luts.h", + "libopenjpeg/t2.c", + "libopenjpeg/tcd.c", + "libopenjpeg/tgt.c", + "libopenjpeg/thread.c", + deps = [ "../core/fxcrt" ]
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
402
403
404
405
406
407
408
409
410
411
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", "//build/config/sanitizers:cfi_icall_generalize_pointers", ":pdfium_third_party_config", # Must be after no_chromium_code for warning flags to be ordered correctly. ":fx_libopenjpeg_warnings", ] sources = [
+ show +
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
"libopenjpeg20/bio.c", "libopenjpeg20/cio.c", "libopenjpeg20/dwt.c", "libopenjpeg20/event.c", "libopenjpeg20/function_list.c", "libopenjpeg20/image.c", "libopenjpeg20/invert.c", "libopenjpeg20/j2k.c", "libopenjpeg20/jp2.c", "libopenjpeg20/mct.c", "libopenjpeg20/mqc.c", "libopenjpeg20/openjpeg.c", "libopenjpeg20/opj_clock.c", "libopenjpeg20/pi.c", "libopenjpeg20/sparse_array.c", "libopenjpeg20/sparse_array.h", "libopenjpeg20/t1.c", "libopenjpeg20/t2.c", "libopenjpeg20/tcd.c", "libopenjpeg20/tgt.c", "libopenjpeg20/thread.c",
+ show +
433
434
435
436
437
438
439
440
441
442
] } config("system_libpng_config") { libs = [ "png" ] defines = [ "USE_SYSTEM_LIBPNG" ] } group("png") { if (use_system_libpng) {

[CVE-2023-40093_1.diff] BUILD.gn #12
- configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", - ":pdfium_third_party_config", - ] + configs += [ + "../:pdfium_strict_config", + "../:pdfium_noshorten_config", + ] -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
19
20
21
22
23
24
25
26
27
28
config("pdfium_third_party_config") { configs = [ "..:pdfium_common_config", "..:pdfium_public_config", ] } if (pdf_enable_xfa) { source_set("bigint") {
+ show +
29
30
31
32
33
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
34
35
36
37
38
39
40
41
42
43
sources = [ "bigint/BigInteger.cc", "bigint/BigInteger.hh", "bigint/BigIntegerLibrary.hh", "bigint/BigIntegerUtils.cc", "bigint/BigIntegerUtils.hh", "bigint/BigUnsigned.cc", "bigint/BigUnsigned.hh", "bigint/BigUnsignedInABase.cc", "bigint/BigUnsignedInABase.hh",
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
440
441
442
443
444
445
446
447
448
449
group("png") { if (use_system_libpng) { public_configs = [ ":system_libpng_config" ] } else { public_deps = [ ":fx_lpng" ] } } source_set("fx_lpng") {
+ show +
450
451
452
453
454
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
455
456
457
458
459
460
461
462
463
464
sources = [ "libpng16/png.c", "libpng16/png.h", "libpng16/pngconf.h", "libpng16/pngdebug.h", "libpng16/pngerror.c", "libpng16/pngget.c", "libpng16/pnginfo.h", "libpng16/pnglibconf.h", "libpng16/pngmem.c",
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
501
502
503
504
505
506
507
508
509
510
} if (is_win) { # Unary minus applied to unsigned type. cflags += [ "/wd4146" ] } } if (pdf_enable_xfa_tiff) { source_set("fx_tiff") {
+ show +
511
512
513
514
515
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
516
517
518
519
520
521
522
523
524
525
if (is_win) { # Need to undefine the macro since it is redefined in # tif_ojpeg.c and tif_jpeg.c. configs -= [ "//build/config/win:lean_and_mean" ] } deps = [ ":zlib", "../core/fxcrt", "//third_party:jpeg", ]
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
559
560
561
562
563
564
565
566
567
568
"libtiff/tif_warning.c", "libtiff/tif_write.c", "libtiff/tif_zip.c", "libtiff/tiffiop.h", "libtiff/tiffvers.h", ] } } source_set("pdfium_base") {
+ show +
569
570
571
572
573
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
574
575
576
577
578
579
580
581
582
583
sources = [ "base/allocator/partition_allocator/address_space_randomization.cc", "base/allocator/partition_allocator/address_space_randomization.h", "base/allocator/partition_allocator/oom.h", "base/allocator/partition_allocator/oom_callback.cc", "base/allocator/partition_allocator/oom_callback.h", "base/allocator/partition_allocator/page_allocator.cc", "base/allocator/partition_allocator/page_allocator.h", "base/allocator/partition_allocator/page_allocator_constants.h", "base/allocator/partition_allocator/page_allocator_internal.h",
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
623
624
625
626
627
628
629
630
631
632
if (is_win) { sources += [ "base/win/win_util.cc", "base/win/win_util.h", ] } } source_set("pdfium_base_test_support") { testonly = true
+ show +
633
634
635
636
637
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
638
639
640
641
642
643
644
645
646
647
sources = [] deps = [] if (is_posix || is_fuchsia) { sources += [ "base/test/scoped_locale.cc", "base/test/scoped_locale.h", ] deps += [ "//testing/gtest" ] }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
641
642
643
644
645
646
647
648
649
650
if (is_posix || is_fuchsia) { sources += [ "base/test/scoped_locale.cc", "base/test/scoped_locale.h", ] deps += [ "//testing/gtest" ] } } source_set("skia_shared") {
+ show +
651
652
653
654
655
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
656
657
658
659
660
sources = [ "skia_shared/SkFloatToDecimal.cpp", "skia_shared/SkFloatToDecimal.h", ] }

[CVE-2023-40093_1.diff] BUILD.gn #13
- configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", - ":pdfium_third_party_config", - ] + configs += [ + "../:pdfium_strict_config", + "../:pdfium_noshorten_config", + ]
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
19
20
21
22
23
24
25
26
27
28
config("pdfium_third_party_config") { configs = [ "..:pdfium_common_config", "..:pdfium_public_config", ] } if (pdf_enable_xfa) { source_set("bigint") {
+ show +
29
30
31
32
33
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
34
35
36
37
38
39
40
41
42
43
sources = [ "bigint/BigInteger.cc", "bigint/BigInteger.hh", "bigint/BigIntegerLibrary.hh", "bigint/BigIntegerUtils.cc", "bigint/BigIntegerUtils.hh", "bigint/BigUnsigned.cc", "bigint/BigUnsigned.hh", "bigint/BigUnsignedInABase.cc", "bigint/BigUnsignedInABase.hh",
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
440
441
442
443
444
445
446
447
448
449
group("png") { if (use_system_libpng) { public_configs = [ ":system_libpng_config" ] } else { public_deps = [ ":fx_lpng" ] } } source_set("fx_lpng") {
+ show +
450
451
452
453
454
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
455
456
457
458
459
460
461
462
463
464
sources = [ "libpng16/png.c", "libpng16/png.h", "libpng16/pngconf.h", "libpng16/pngdebug.h", "libpng16/pngerror.c", "libpng16/pngget.c", "libpng16/pnginfo.h", "libpng16/pnglibconf.h", "libpng16/pngmem.c",
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
501
502
503
504
505
506
507
508
509
510
} if (is_win) { # Unary minus applied to unsigned type. cflags += [ "/wd4146" ] } } if (pdf_enable_xfa_tiff) { source_set("fx_tiff") {
+ show +
511
512
513
514
515
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
516
517
518
519
520
521
522
523
524
525
if (is_win) { # Need to undefine the macro since it is redefined in # tif_ojpeg.c and tif_jpeg.c. configs -= [ "//build/config/win:lean_and_mean" ] } deps = [ ":zlib", "../core/fxcrt", "//third_party:jpeg", ]
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
559
560
561
562
563
564
565
566
567
568
"libtiff/tif_warning.c", "libtiff/tif_write.c", "libtiff/tif_zip.c", "libtiff/tiffiop.h", "libtiff/tiffvers.h", ] } } source_set("pdfium_base") {
+ show +
569
570
571
572
573
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
574
575
576
577
578
579
580
581
582
583
sources = [ "base/allocator/partition_allocator/address_space_randomization.cc", "base/allocator/partition_allocator/address_space_randomization.h", "base/allocator/partition_allocator/oom.h", "base/allocator/partition_allocator/oom_callback.cc", "base/allocator/partition_allocator/oom_callback.h", "base/allocator/partition_allocator/page_allocator.cc", "base/allocator/partition_allocator/page_allocator.h", "base/allocator/partition_allocator/page_allocator_constants.h", "base/allocator/partition_allocator/page_allocator_internal.h",
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
623
624
625
626
627
628
629
630
631
632
if (is_win) { sources += [ "base/win/win_util.cc", "base/win/win_util.h", ] } } source_set("pdfium_base_test_support") { testonly = true
+ show +
633
634
635
636
637
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
638
639
640
641
642
643
644
645
646
647
sources = [] deps = [] if (is_posix || is_fuchsia) { sources += [ "base/test/scoped_locale.cc", "base/test/scoped_locale.h", ] deps += [ "//testing/gtest" ] }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/BUILD.gn
641
642
643
644
645
646
647
648
649
650
if (is_posix || is_fuchsia) { sources += [ "base/test/scoped_locale.cc", "base/test/scoped_locale.h", ] deps += [ "//testing/gtest" ] } } source_set("skia_shared") {
+ show +
651
652
653
654
655
configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code", ":pdfium_third_party_config", ]
+ show +
656
657
658
659
660
sources = [ "skia_shared/SkFloatToDecimal.cpp", "skia_shared/SkFloatToDecimal.h", ] }

[CVE-2023-40093_1.diff] tif_strip.c #2
-uint32 -TIFFComputeStrip(TIFF* tif, uint32 row, uint16 sample) +uint32_t TIFFComputeStrip(TIFF *tif, uint32_t row, uint16_t sample) - static const char module[] = "TIFFComputeStrip"; - TIFFDirectory *td = &tif->tif_dir; - uint32 strip; + static const char module[] = "TIFFComputeStrip"; + TIFFDirectory *td = &tif->tif_dir; + uint32_t strip; - strip = row / td->td_rowsperstrip; - if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { - if (sample >= td->td_samplesperpixel) { - TIFFErrorExt(tif->tif_clientdata, module, - "%lu: Sample out of range, max %lu", - (unsigned long) sample, (unsigned long) td->td_samplesperpixel); - return (0); - } - strip += (uint32)sample*td->td_stripsperimage; - } - return (strip); + strip = row / td->td_rowsperstrip; + if (td->td_planarconfig == PLANARCONFIG_SEPARATE) + { + if (sample >= td->td_samplesperpixel) + { + TIFFErrorExtR(tif, module, "%lu: Sample out of range, max %lu", + (unsigned long)sample, + (unsigned long)td->td_samplesperpixel); + return (0); + } + strip += (uint32_t)sample * td->td_stripsperimage; + } + return (strip); -uint32 -TIFFNumberOfStrips(TIFF* tif) +uint32_t TIFFNumberOfStrips(TIFF *tif) - TIFFDirectory *td = &tif->tif_dir; - uint32 nstrips; + TIFFDirectory *td = &tif->tif_dir; + uint32_t nstrips; - nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 : - TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip)); - if (td->td_planarconfig == PLANARCONFIG_SEPARATE) - nstrips = _TIFFMultiply32(tif, nstrips, (uint32)td->td_samplesperpixel, - "TIFFNumberOfStrips"); - return (nstrips); + nstrips = (td->td_rowsperstrip == (uint32_t)-1 + ? 1 + : TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip)); + if (td->td_planarconfig == PLANARCONFIG_SEPARATE) + nstrips = + _TIFFMultiply32(tif, nstrips, (uint32_t)td->td_samplesperpixel, + "TIFFNumberOfStrips"); + return (nstrips); -uint64 -TIFFVStripSize64(TIFF* tif, uint32 nrows) +uint64_t TIFFVStripSize64(TIFF *tif, uint32_t nrows) - static const char module[] = "TIFFVStripSize64"; - TIFFDirectory *td = &tif->tif_dir; - if (nrows==(uint32)(-1)) - nrows=td->td_imagelength; - if ((td->td_planarconfig==PLANARCONFIG_CONTIG)&& - (td->td_photometric == PHOTOMETRIC_YCBCR)&& - (!isUpSampled(tif))) - { - /* - * Packed YCbCr data contain one Cb+Cr for every - * HorizontalSampling*VerticalSampling Y values. - * Must also roundup width and height when calculating - * since images that are not a multiple of the - * horizontal/vertical subsampling area include - * YCbCr data for the extended image. - */ - uint16 ycbcrsubsampling[2]; - uint16 samplingblock_samples; - uint32 samplingblocks_hor; - uint32 samplingblocks_ver; - uint64 samplingrow_samples; - uint64 samplingrow_size; - if(td->td_samplesperpixel!=3) - { - TIFFErrorExt(tif->tif_clientdata,module, - "Invalid td_samplesperpixel value"); - return 0; - } - TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0, - ycbcrsubsampling+1); - if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4) - ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4)) - { - TIFFErrorExt(tif->tif_clientdata,module, - "Invalid YCbCr subsampling (%dx%d)", - ycbcrsubsampling[0], - ycbcrsubsampling[1] ); - return 0; - } - samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2; - samplingblocks_hor=TIFFhowmany_32(td->td_imagewidth,ycbcrsubsampling[0]); - samplingblocks_ver=TIFFhowmany_32(nrows,ycbcrsubsampling[1]); - samplingrow_samples=_TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module); - samplingrow_size=TIFFhowmany8_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module)); - return(_TIFFMultiply64(tif,samplingrow_size,samplingblocks_ver,module)); - } - else - return(_TIFFMultiply64(tif,nrows,TIFFScanlineSize64(tif),module)); + static const char module[] = "TIFFVStripSize64"; + TIFFDirectory *td = &tif->tif_dir; + if (nrows == (uint32_t)(-1)) + nrows = td->td_imagelength; + if ((td->td_planarconfig == PLANARCONFIG_CONTIG) && + (td->td_photometric == PHOTOMETRIC_YCBCR) && (!isUpSampled(tif))) + { + /* + * Packed YCbCr data contain one Cb+Cr for every + * HorizontalSampling*VerticalSampling Y values. + * Must also roundup width and height when calculating + * since images that are not a multiple of the + * horizontal/vertical subsampling area include + * YCbCr data for the extended image. + */ + uint16_t ycbcrsubsampling[2]; + uint16_t samplingblock_samples; + uint32_t samplingblocks_hor; + uint32_t samplingblocks_ver; + uint64_t samplingrow_samples; + uint64_t samplingrow_size; + if (td->td_samplesperpixel != 3) + { + TIFFErrorExtR(tif, module, "Invalid td_samplesperpixel value"); + return 0; + } + TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, + ycbcrsubsampling + 0, ycbcrsubsampling + 1); + if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && + ycbcrsubsampling[0] != 4) || + (ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && + ycbcrsubsampling[1] != 4)) + { + TIFFErrorExtR(tif, module, "Invalid YCbCr subsampling (%dx%d)", + ycbcrsubsampling[0], ycbcrsubsampling[1]); + return 0; + } + samplingblock_samples = ycbcrsubsampling[0] * ycbcrsubsampling[1] + 2; + samplingblocks_hor = + TIFFhowmany_32(td->td_imagewidth, ycbcrsubsampling[0]); + samplingblocks_ver = TIFFhowmany_32(nrows, ycbcrsubsampling[1]); + samplingrow_samples = _TIFFMultiply64(tif, samplingblocks_hor, + samplingblock_samples, module); + samplingrow_size = TIFFhowmany8_64(_TIFFMultiply64( + tif, samplingrow_samples, td->td_bitspersample, module)); + return ( + _TIFFMultiply64(tif, samplingrow_size, samplingblocks_ver, module)); + } + else + return (_TIFFMultiply64(tif, nrows, TIFFScanlineSize64(tif), module)); -tmsize_t -TIFFVStripSize(TIFF* tif, uint32 nrows) +tmsize_t TIFFVStripSize(TIFF *tif, uint32_t nrows) - static const char module[] = "TIFFVStripSize"; - uint64 m; - m=TIFFVStripSize64(tif,nrows); - return _TIFFCastUInt64ToSSize(tif, m, module); + static const char module[] = "TIFFVStripSize"; + uint64_t m; + m = TIFFVStripSize64(tif, nrows); + return _TIFFCastUInt64ToSSize(tif, m, module); -uint64 -TIFFRawStripSize64(TIFF* tif, uint32 strip) +uint64_t TIFFRawStripSize64(TIFF *tif, uint32_t strip) - static const char module[] = "TIFFRawStripSize64"; - uint64 bytecount = TIFFGetStrileByteCount(tif, strip); + static const char module[] = "TIFFRawStripSize64"; + uint64_t bytecount = TIFFGetStrileByteCount(tif, strip); - if (bytecount == 0) - { -#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) - TIFFErrorExt(tif->tif_clientdata, module, - "%I64u: Invalid strip byte count, strip %lu", - (unsigned __int64) bytecount, - (unsigned long) strip); -#else - TIFFErrorExt(tif->tif_clientdata, module, - "%llu: Invalid strip byte count, strip %lu", - (unsigned long long) bytecount, - (unsigned long) strip); -#endif - bytecount = (uint64) -1; - } + if (bytecount == 0) + { + TIFFErrorExtR(tif, module, + "%" PRIu64 ": Invalid strip byte count, strip %lu", + (uint64_t)bytecount, (unsigned long)strip); + bytecount = (uint64_t)-1; + } - return bytecount; + return bytecount; -tmsize_t -TIFFRawStripSize(TIFF* tif, uint32 strip) +tmsize_t TIFFRawStripSize(TIFF *tif, uint32_t strip) - static const char module[] = "TIFFRawStripSize"; - uint64 m; - tmsize_t n; - m=TIFFRawStripSize64(tif,strip); - if (m==(uint64)(-1)) - n=(tmsize_t)(-1); - else - { - n=(tmsize_t)m; - if ((uint64)n!=m) - { - TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); - n=0; - } - } - return(n); + static const char module[] = "TIFFRawStripSize"; + uint64_t m; + tmsize_t n; + m = TIFFRawStripSize64(tif, strip); + if (m == (uint64_t)(-1)) + n = (tmsize_t)(-1); + else + { + n = (tmsize_t)m; + if ((uint64_t)n != m) + { + TIFFErrorExtR(tif, module, "Integer overflow"); + n = 0; + } + } + return (n);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_strip.c
25
26
27
28
29
30
31
32
33
34
/* * TIFF Library. * * Strip-organized Image Support Routines. */ #include "tiffiop.h" /* * Compute which strip a (row,sample) value is in. */
+ show +
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
uint32 TIFFComputeStrip(TIFF* tif, uint32 row, uint16 sample) { static const char module[] = "TIFFComputeStrip"; TIFFDirectory *td = &tif->tif_dir; uint32 strip; strip = row / td->td_rowsperstrip; if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { if (sample >= td->td_samplesperpixel) { TIFFErrorExt(tif->tif_clientdata, module, "%lu: Sample out of range, max %lu", (unsigned long) sample, (unsigned long) td->td_samplesperpixel); return (0); } strip += (uint32)sample*td->td_stripsperimage; } return (strip); } /* * Compute how many strips are in an image. */ uint32 TIFFNumberOfStrips(TIFF* tif) { TIFFDirectory *td = &tif->tif_dir; uint32 nstrips; nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 : TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip)); if (td->td_planarconfig == PLANARCONFIG_SEPARATE) nstrips = _TIFFMultiply32(tif, nstrips, (uint32)td->td_samplesperpixel, "TIFFNumberOfStrips"); return (nstrips); } /* * Compute the # bytes in a variable height, row-aligned strip. */ uint64 TIFFVStripSize64(TIFF* tif, uint32 nrows) { static const char module[] = "TIFFVStripSize64"; TIFFDirectory *td = &tif->tif_dir; if (nrows==(uint32)(-1)) nrows=td->td_imagelength; if ((td->td_planarconfig==PLANARCONFIG_CONTIG)&& (td->td_photometric == PHOTOMETRIC_YCBCR)&& (!isUpSampled(tif))) { /* * Packed YCbCr data contain one Cb+Cr for every * HorizontalSampling*VerticalSampling Y values. * Must also roundup width and height when calculating * since images that are not a multiple of the * horizontal/vertical subsampling area include * YCbCr data for the extended image. */ uint16 ycbcrsubsampling[2]; uint16 samplingblock_samples; uint32 samplingblocks_hor; uint32 samplingblocks_ver; uint64 samplingrow_samples; uint64 samplingrow_size; if(td->td_samplesperpixel!=3) { TIFFErrorExt(tif->tif_clientdata,module, "Invalid td_samplesperpixel value"); return 0; } TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0, ycbcrsubsampling+1); if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4) ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4)) { TIFFErrorExt(tif->tif_clientdata,module, "Invalid YCbCr subsampling (%dx%d)", ycbcrsubsampling[0], ycbcrsubsampling[1] ); return 0; } samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2; samplingblocks_hor=TIFFhowmany_32(td->td_imagewidth,ycbcrsubsampling[0]); samplingblocks_ver=TIFFhowmany_32(nrows,ycbcrsubsampling[1]); samplingrow_samples=_TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module); samplingrow_size=TIFFhowmany8_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module)); return(_TIFFMultiply64(tif,samplingrow_size,samplingblocks_ver,module)); } else return(_TIFFMultiply64(tif,nrows,TIFFScanlineSize64(tif),module)); } tmsize_t TIFFVStripSize(TIFF* tif, uint32 nrows) { static const char module[] = "TIFFVStripSize"; uint64 m; m=TIFFVStripSize64(tif,nrows); return _TIFFCastUInt64ToSSize(tif, m, module); } /* * Compute the # bytes in a raw strip. */ uint64 TIFFRawStripSize64(TIFF* tif, uint32 strip) { static const char module[] = "TIFFRawStripSize64"; uint64 bytecount = TIFFGetStrileByteCount(tif, strip); if (bytecount == 0) { #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) TIFFErrorExt(tif->tif_clientdata, module, "%I64u: Invalid strip byte count, strip %lu", (unsigned __int64) bytecount, (unsigned long) strip); #else TIFFErrorExt(tif->tif_clientdata, module, "%llu: Invalid strip byte count, strip %lu", (unsigned long long) bytecount, (unsigned long) strip); #endif bytecount = (uint64) -1; } return bytecount; } tmsize_t TIFFRawStripSize(TIFF* tif, uint32 strip) { static const char module[] = "TIFFRawStripSize"; uint64 m; tmsize_t n; m=TIFFRawStripSize64(tif,strip); if (m==(uint64)(-1)) n=(tmsize_t)(-1); else { n=(tmsize_t)m; if ((uint64)n!=m) { TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); n=0; } } return(n);
+ show +
182
183
184
185
186
187
188
189
190
191
} /* * Compute the # bytes in a (row-aligned) strip. * * Note that if RowsPerStrip is larger than the * recorded ImageLength, then the strip size is * truncated to reflect the actual space required * to hold the strip. */

[CVE-2023-40093_1.diff] tif_strip.c #3
-uint64 -TIFFStripSize64(TIFF* tif) +uint64_t TIFFStripSize64(TIFF *tif) - TIFFDirectory* td = &tif->tif_dir; - uint32 rps = td->td_rowsperstrip; - if (rps > td->td_imagelength) - rps = td->td_imagelength; - return (TIFFVStripSize64(tif, rps)); + TIFFDirectory *td = &tif->tif_dir; + uint32_t rps = td->td_rowsperstrip; + if (rps > td->td_imagelength) + rps = td->td_imagelength; + return (TIFFVStripSize64(tif, rps)); -tmsize_t -TIFFStripSize(TIFF* tif) +tmsize_t TIFFStripSize(TIFF *tif) - static const char module[] = "TIFFStripSize"; - uint64 m; - m=TIFFStripSize64(tif); - return _TIFFCastUInt64ToSSize(tif, m, module); + static const char module[] = "TIFFStripSize"; + uint64_t m; + m = TIFFStripSize64(tif); + return _TIFFCastUInt64ToSSize(tif, m, module);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_strip.c
182
183
184
185
186
187
188
189
190
191
} /* * Compute the # bytes in a (row-aligned) strip. * * Note that if RowsPerStrip is larger than the * recorded ImageLength, then the strip size is * truncated to reflect the actual space required * to hold the strip. */
+ show +
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
uint64 TIFFStripSize64(TIFF* tif) { TIFFDirectory* td = &tif->tif_dir; uint32 rps = td->td_rowsperstrip; if (rps > td->td_imagelength) rps = td->td_imagelength; return (TIFFVStripSize64(tif, rps)); } tmsize_t TIFFStripSize(TIFF* tif) { static const char module[] = "TIFFStripSize"; uint64 m; m=TIFFStripSize64(tif); return _TIFFCastUInt64ToSSize(tif, m, module);
+ show +
208
209
210
211
212
213
214
215
216
217
} /* * Compute a default strip size based on the image * characteristics and a requested value. If the * request is <1 then we choose a strip size according * to certain heuristics. */ uint32 TIFFDefaultStripSize(TIFF* tif, uint32 request)

[CVE-2023-40093_1.diff] tif_strip.c #4
-uint32 -TIFFDefaultStripSize(TIFF* tif, uint32 request) +uint32_t TIFFDefaultStripSize(TIFF *tif, uint32_t request) - return (*tif->tif_defstripsize)(tif, request); + return (*tif->tif_defstripsize)(tif, request); -uint32 -_TIFFDefaultStripSize(TIFF* tif, uint32 s) +uint32_t _TIFFDefaultStripSize(TIFF *tif, uint32_t s) - if ((int32) s < 1) { - /* - * If RowsPerStrip is unspecified, try to break the - * image up into strips that are approximately - * STRIP_SIZE_DEFAULT bytes long. - */ - uint64 scanlinesize; - uint64 rows; - scanlinesize=TIFFScanlineSize64(tif); - if (scanlinesize==0) - scanlinesize=1; - rows=(uint64)STRIP_SIZE_DEFAULT/scanlinesize; - if (rows==0) - rows=1; - else if (rows>0xFFFFFFFF) - rows=0xFFFFFFFF; - s=(uint32)rows; - } - return (s); + if ((int32_t)s < 1) + { + /* + * If RowsPerStrip is unspecified, try to break the + * image up into strips that are approximately + * STRIP_SIZE_DEFAULT bytes long. + */ + uint64_t scanlinesize; + uint64_t rows; + scanlinesize = TIFFScanlineSize64(tif); + if (scanlinesize == 0) + scanlinesize = 1; + rows = (uint64_t)STRIP_SIZE_DEFAULT / scanlinesize; + if (rows == 0) + rows = 1; + else if (rows > 0xFFFFFFFF) + rows = 0xFFFFFFFF; + s = (uint32_t)rows; + } + return (s);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_strip.c
206
207
208
209
210
211
212
213
214
215
m=TIFFStripSize64(tif); return _TIFFCastUInt64ToSSize(tif, m, module); } /* * Compute a default strip size based on the image * characteristics and a requested value. If the * request is <1 then we choose a strip size according * to certain heuristics. */
+ show +
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
uint32 TIFFDefaultStripSize(TIFF* tif, uint32 request) { return (*tif->tif_defstripsize)(tif, request); } uint32 _TIFFDefaultStripSize(TIFF* tif, uint32 s) { if ((int32) s < 1) { /* * If RowsPerStrip is unspecified, try to break the * image up into strips that are approximately * STRIP_SIZE_DEFAULT bytes long. */ uint64 scanlinesize; uint64 rows; scanlinesize=TIFFScanlineSize64(tif); if (scanlinesize==0) scanlinesize=1; rows=(uint64)STRIP_SIZE_DEFAULT/scanlinesize; if (rows==0) rows=1; else if (rows>0xFFFFFFFF) rows=0xFFFFFFFF; s=(uint32)rows; } return (s);
+ show +
244
245
246
247
248
249
250
251
252
253
} /* * Return the number of bytes to read/write in a call to * one of the scanline-oriented i/o routines. Note that * this number may be 1/samples-per-pixel if data is * stored as separate planes. * The ScanlineSize in case of YCbCrSubsampling is defined as the * strip size divided by the strip height, i.e. the size of a pack of vertical * subsampling lines divided by vertical subsampling. It should thus make

[CVE-2023-40093_1.diff] tif_fax3.h #6
-#define SYNC_EOL(eoflab) do { \ - if (EOLcnt == 0) { \ - for (;;) { \ - NeedBits16(11,eoflab); \ - if (GetBits(11) == 0) \ - break; \ - ClrBits(1); \ - } \ - } \ - for (;;) { \ - NeedBits8(8,eoflab); \ - if (GetBits(8)) \ - break; \ - ClrBits(8); \ - } \ - while (GetBits(1) == 0) \ - ClrBits(1); \ - ClrBits(1); /* EOL bit */ \ - EOLcnt = 0; /* reset EOL counter/flag */ \ -} while (0) +#define SYNC_EOL(eoflab) \ + do \ + { \ + if (EOLcnt == 0) \ + { \ + for (;;) \ + { \ + NeedBits16(11, eoflab); \ + if (GetBits(11) == 0) \ + break; \ + ClrBits(1); \ + } \ + } \ + for (;;) \ + { \ + NeedBits8(8, eoflab); \ + if (GetBits(8)) \ + break; \ + ClrBits(8); \ + } \ + while (GetBits(1) == 0) \ + ClrBits(1); \ + ClrBits(1); /* EOL bit */ \ + EOLcnt = 0; /* reset EOL counter/flag */ \ + } while (0) -#define CLEANUP_RUNS() do { \ - if (RunLength) \ - SETVALUE(0); \ - if (a0 != lastx) { \ - badlength(a0, lastx); \ - while (a0 > lastx && pa > thisrun) \ - a0 -= *--pa; \ - if (a0 < lastx) { \ - if (a0 < 0) \ - a0 = 0; \ - if ((pa-thisrun)&1) \ - SETVALUE(0); \ - SETVALUE(lastx - a0); \ - } else if (a0 > lastx) { \ - SETVALUE(lastx); \ - SETVALUE(0); \ - } \ - } \ -} while (0) +#define CLEANUP_RUNS() \ + do \ + { \ + if (RunLength) \ + SETVALUE(0); \ + if (a0 != lastx) \ + { \ + badlength(a0, lastx); \ + while (a0 > lastx && pa > thisrun) \ + a0 -= *--pa; \ + if (a0 < lastx) \ + { \ + if (a0 < 0) \ + a0 = 0; \ + if ((pa - thisrun) & 1) \ + SETVALUE(0); \ + SETVALUE(lastx - a0); \ + } \ + else if (a0 > lastx) \ + { \ + SETVALUE(lastx); \ + SETVALUE(0); \ + } \ + } \ + } while (0)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_fax3.h
249
250
251
252
253
254
255
256
257
258
/* * Synchronize input decoding at the start of each * row by scanning for an EOL (if appropriate) and * skipping any trash data that might be present * after a decoding error. Note that the decoding * done elsewhere that recognizes an EOL only consumes * 11 consecutive zero bits. This means that if EOLcnt * is non-zero then we still need to scan for the final flag * bit that is part of the EOL code. */
+ show +
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
#define SYNC_EOL(eoflab) do { \ if (EOLcnt == 0) { \ for (;;) { \ NeedBits16(11,eoflab); \ if (GetBits(11) == 0) \ break; \ ClrBits(1); \ } \ } \ for (;;) { \ NeedBits8(8,eoflab); \ if (GetBits(8)) \ break; \ ClrBits(8); \ } \ while (GetBits(1) == 0) \ ClrBits(1); \ ClrBits(1); /* EOL bit */ \ EOLcnt = 0; /* reset EOL counter/flag */ \ } while (0) /* * Cleanup the array of runs after decoding a row. * We adjust final runs to insure the user buffer is not * overwritten and/or undecoded area is white filled. */ #define CLEANUP_RUNS() do { \ if (RunLength) \ SETVALUE(0); \ if (a0 != lastx) { \ badlength(a0, lastx); \ while (a0 > lastx && pa > thisrun) \ a0 -= *--pa; \ if (a0 < lastx) { \ if (a0 < 0) \ a0 = 0; \ if ((pa-thisrun)&1) \ SETVALUE(0); \ SETVALUE(lastx - a0); \ } else if (a0 > lastx) { \ SETVALUE(lastx); \ SETVALUE(0); \ } \ } \ } while (0)
+ show +
304
305
306
307
308
309
310
311
312
313
/* * Decode a line of 1D-encoded data. * * The line expanders are written as macros so that they can be reused * but still have direct access to the local variables of the "calling" * function. * * Note that unlike the original version we have to explicitly test for * a0 >= lastx after each black/white run is decoded. This is because

[CVE-2023-40093_1.diff] tif_jpeg.c #4
-# ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ - typedef unsigned char boolean; -# endif -# define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ +#ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ +typedef unsigned char boolean; +#endif +#define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_ojpeg.c
199
200
201
202
203
204
205
206
207
208
not defined. Unfortunately, the MinGW and Borland compilers include a typedef for INT32, which causes a conflict. MSVC does not include a conflicting typedef given the headers which are included. */ #if defined(__BORLANDC__) || defined(__MINGW32__) # define XMD_H 1 #endif /* Define "boolean" as unsigned char, not int, per Windows custom. */ #if defined(__WIN32__) && !defined(__MINGW32__)
+ show +
209
210
211
212
# ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ typedef unsigned char boolean; # endif # define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
+ show +
213
214
215
216
217
218
219
220
221
222
#endif #if defined(USE_SYSTEM_LIBJPEG) #include <jerror.h> #include <jpeglib.h> #elif defined(USE_LIBJPEG_TURBO) #include "third_party/libjpeg_turbo/jerror.h" #include "third_party/libjpeg_turbo/jpeglib.h" #else #include "third_party/libjpeg/jerror.h"
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_jpeg.c
73
74
75
76
77
78
79
80
81
82
"JPEGLib: JPEG parameter struct mismatch: library thinks size is 432, caller expects 464" For such users we will fix the problem here. See install.doc file from the JPEG library distribution for details. */ /* Define "boolean" as unsigned char, not int, per Windows custom. */ #if defined(__WIN32__) && !defined(__MINGW32__)
+ show +
83
84
85
86
# ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ typedef unsigned char boolean; # endif # define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
+ show +
87
88
89
90
91
92
93
94
95
96
#endif #if defined(USE_SYSTEM_LIBJPEG) #include <jerror.h> #include <jpeglib.h> #elif defined(USE_LIBJPEG_TURBO) #include "third_party/libjpeg_turbo/jerror.h" #include "third_party/libjpeg_turbo/jpeglib.h" #else #include "third_party/libjpeg/jerror.h"
/media/esteban/ACOS/dotOS/external/libjpeg-turbo/jconfig.txt
66
67
68
69
70
71
72
73
74
75
* and pseudo-ANSI compilers get confused. To keep one of these bozos happy, * define INCOMPLETE_TYPES_BROKEN. This is not recommended unless you * actually get "missing structure definition" warnings or errors while * compiling the JPEG code. */ #undef INCOMPLETE_TYPES_BROKEN /* Define "boolean" as unsigned char, not int, on Windows systems. */ #ifdef _WIN32
+ show +
76
77
78
79
#ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ typedef unsigned char boolean; #endif #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
+ show +
80
81
82
83
84
85
86
87
88
89
#endif /* * The following options affect code selection within the JPEG library, * but they don't need to be visible to applications using the library. * To minimize application namespace pollution, the symbols won't be * defined unless JPEG_INTERNALS has been defined. */

[CVE-2023-40093_1.diff] tif_dirwrite.c #4
-int -TIFFCheckpointDirectory(TIFF* tif) +int TIFFCheckpointDirectory(TIFF *tif) - int rc; - /* Setup the strips arrays, if they haven't already been. */ - if (tif->tif_dir.td_stripoffset_p == NULL) - (void) TIFFSetupStrips(tif); - rc = TIFFWriteDirectorySec(tif,TRUE,FALSE,NULL); - (void) TIFFSetWriteOffset(tif, TIFFSeekFile(tif, 0, SEEK_END)); - return rc; + int rc; + /* Setup the strips arrays, if they haven't already been. */ + if (tif->tif_dir.td_stripoffset_p == NULL) + (void)TIFFSetupStrips(tif); + rc = TIFFWriteDirectorySec(tif, TRUE, FALSE, NULL); + (void)TIFFSetWriteOffset(tif, TIFFSeekFile(tif, 0, SEEK_END)); + return rc; -int -TIFFWriteCustomDirectory(TIFF* tif, uint64* pdiroff) +int TIFFWriteCustomDirectory(TIFF *tif, uint64_t *pdiroff) - return TIFFWriteDirectorySec(tif,FALSE,FALSE,pdiroff); + return TIFFWriteDirectorySec(tif, FALSE, FALSE, pdiroff); - * previously used directory space. - */ -int -TIFFRewriteDirectory( TIFF *tif ) + * previously used directory space. + */ +int TIFFRewriteDirectory(TIFF *tif) - static const char module[] = "TIFFRewriteDirectory"; + static const char module[] = "TIFFRewriteDirectory"; - /* We don't need to do anything special if it hasn't been written. */ - if( tif->tif_diroff == 0 ) - return TIFFWriteDirectory( tif ); + /* We don't need to do anything special if it hasn't been written. */ + if (tif->tif_diroff == 0) + return TIFFWriteDirectory(tif); - /* - * Find and zero the pointer to this directory, so that TIFFLinkDirectory - * will cause it to be added after this directories current pre-link. - */ + /* + * Find and zero the pointer to this directory, so that TIFFLinkDirectory + * will cause it to be added after this directories current pre-link. + */ - if (!(tif->tif_flags&TIFF_BIGTIFF)) - { - if (tif->tif_header.classic.tiff_diroff == tif->tif_diroff) - { - tif->tif_header.classic.tiff_diroff = 0; - tif->tif_diroff = 0; + if (!(tif->tif_flags & TIFF_BIGTIFF)) + { + if (tif->tif_header.classic.tiff_diroff == tif->tif_diroff) + { + tif->tif_header.classic.tiff_diroff = 0; + tif->tif_diroff = 0; - TIFFSeekFile(tif,4,SEEK_SET); - if (!WriteOK(tif, &(tif->tif_header.classic.tiff_diroff),4)) - { - TIFFErrorExt(tif->tif_clientdata, tif->tif_name, - "Error updating TIFF header"); - return (0); - } - } - else - { - uint32 nextdir; - nextdir = tif->tif_header.classic.tiff_diroff; - while(1) { - uint16 dircount; - uint32 nextnextdir; + TIFFSeekFile(tif, 4, SEEK_SET); + if (!WriteOK(tif, &(tif->tif_header.classic.tiff_diroff), 4)) + { + TIFFErrorExtR(tif, tif->tif_name, "Error updating TIFF header"); + return (0); + } + } + else if (tif->tif_diroff > 0xFFFFFFFFU) + { + TIFFErrorExtR(tif, module, + "tif->tif_diroff exceeds 32 bit range allowed for " + "Classic TIFF"); + return (0); + } + else + { + uint32_t nextdir; + nextdir = tif->tif_header.classic.tiff_diroff; + while (1) + { + uint16_t dircount; + uint32_t nextnextdir; - if (!SeekOK(tif, nextdir) || - !ReadOK(tif, &dircount, 2)) { - TIFFErrorExt(tif->tif_clientdata, module, - "Error fetching directory count"); - return (0); - } - if (tif->tif_flags & TIFF_SWAB) - TIFFSwabShort(&dircount); - (void) TIFFSeekFile(tif, - nextdir+2+dircount*12, SEEK_SET); - if (!ReadOK(tif, &nextnextdir, 4)) { - TIFFErrorExt(tif->tif_clientdata, module, - "Error fetching directory link"); - return (0); - } - if (tif->tif_flags & TIFF_SWAB) - TIFFSwabLong(&nextnextdir); - if (nextnextdir==tif->tif_diroff) - { - uint32 m; - m=0; - (void) TIFFSeekFile(tif, - nextdir+2+dircount*12, SEEK_SET); - if (!WriteOK(tif, &m, 4)) { - TIFFErrorExt(tif->tif_clientdata, module, - "Error writing directory link"); - return (0); - } - tif->tif_diroff=0; - break; - } - nextdir=nextnextdir; - } - } - } - else - { - if (tif->tif_header.big.tiff_diroff == tif->tif_diroff) - { - tif->tif_header.big.tiff_diroff = 0; - tif->tif_diroff = 0; + if (!SeekOK(tif, nextdir) || !ReadOK(tif, &dircount, 2)) + { + TIFFErrorExtR(tif, module, + "Error fetching directory count"); + return (0); + } + if (tif->tif_flags & TIFF_SWAB) + TIFFSwabShort(&dircount); + (void)TIFFSeekFile(tif, nextdir + 2 + dircount * 12, SEEK_SET); + if (!ReadOK(tif, &nextnextdir, 4)) + { + TIFFErrorExtR(tif, module, "Error fetching directory link"); + return (0); + } + if (tif->tif_flags & TIFF_SWAB) + TIFFSwabLong(&nextnextdir); + if (nextnextdir == tif->tif_diroff) + { + uint32_t m; + m = 0; + (void)TIFFSeekFile(tif, nextdir + 2 + dircount * 12, + SEEK_SET); + if (!WriteOK(tif, &m, 4)) + { + TIFFErrorExtR(tif, module, + "Error writing directory link"); + return (0); + } + tif->tif_diroff = 0; + /* Force a full-traversal to reach the zeroed pointer */ + tif->tif_lastdiroff = 0; + break; + } + nextdir = nextnextdir; + } + } + } + else + { + if (tif->tif_header.big.tiff_diroff == tif->tif_diroff) + { + tif->tif_header.big.tiff_diroff = 0; + tif->tif_diroff = 0; - TIFFSeekFile(tif,8,SEEK_SET); - if (!WriteOK(tif, &(tif->tif_header.big.tiff_diroff),8)) - { - TIFFErrorExt(tif->tif_clientdata, tif->tif_name, - "Error updating TIFF header"); - return (0); - } - } - else - { - uint64 nextdir; - nextdir = tif->tif_header.big.tiff_diroff; - while(1) { - uint64 dircount64; - uint16 dircount; - uint64 nextnextdir; + TIFFSeekFile(tif, 8, SEEK_SET); + if (!WriteOK(tif, &(tif->tif_header.big.tiff_diroff), 8)) + { + TIFFErrorExtR(tif, tif->tif_name, "Error updating TIFF header"); + return (0); + } + } + else + { + uint64_t nextdir; + nextdir = tif->tif_header.big.tiff_diroff; + while (1) + { + uint64_t dircount64; + uint16_t dircount; + uint64_t nextnextdir; - if (!SeekOK(tif, nextdir) || - !ReadOK(tif, &dircount64, 8)) { - TIFFErrorExt(tif->tif_clientdata, module, - "Error fetching directory count"); - return (0); - } - if (tif->tif_flags & TIFF_SWAB) - TIFFSwabLong8(&dircount64); - if (dircount64>0xFFFF) - { - TIFFErrorExt(tif->tif_clientdata, module, - "Sanity check on tag count failed, likely corrupt TIFF"); - return (0); - } - dircount=(uint16)dircount64; - (void) TIFFSeekFile(tif, - nextdir+8+dircount*20, SEEK_SET); - if (!ReadOK(tif, &nextnextdir, 8)) { - TIFFErrorExt(tif->tif_clientdata, module, - "Error fetching directory link"); - return (0); - } - if (tif->tif_flags & TIFF_SWAB) - TIFFSwabLong8(&nextnextdir); - if (nextnextdir==tif->tif_diroff) - { - uint64 m; - m=0; - (void) TIFFSeekFile(tif, - nextdir+8+dircount*20, SEEK_SET); - if (!WriteOK(tif, &m, 8)) { - TIFFErrorExt(tif->tif_clientdata, module, - "Error writing directory link"); - return (0); - } - tif->tif_diroff=0; - break; - } - nextdir=nextnextdir; - } - } - } + if (!SeekOK(tif, nextdir) || !ReadOK(tif, &dircount64, 8)) + { + TIFFErrorExtR(tif, module, + "Error fetching directory count"); + return (0); + } + if (tif->tif_flags & TIFF_SWAB) + TIFFSwabLong8(&dircount64); + if (dircount64 > 0xFFFF) + { + TIFFErrorExtR(tif, module, + "Sanity check on tag count failed, likely " + "corrupt TIFF"); + return (0); + } + dircount = (uint16_t)dircount64; + (void)TIFFSeekFile(tif, nextdir + 8 + dircount * 20, SEEK_SET); + if (!ReadOK(tif, &nextnextdir, 8)) + { + TIFFErrorExtR(tif, module, "Error fetching directory link"); + return (0); + } + if (tif->tif_flags & TIFF_SWAB) + TIFFSwabLong8(&nextnextdir); + if (nextnextdir == tif->tif_diroff) + { + uint64_t m; + m = 0; + (void)TIFFSeekFile(tif, nextdir + 8 + dircount * 20, + SEEK_SET); + if (!WriteOK(tif, &m, 8)) + { + TIFFErrorExtR(tif, module, + "Error writing directory link"); + return (0); + } + tif->tif_diroff = 0; + /* Force a full-traversal to reach the zeroed pointer */ + tif->tif_lastdiroff = 0; + break; + } + nextdir = nextnextdir; + } + } + } - /* - * Now use TIFFWriteDirectory() normally. - */ + /* + * Now use TIFFWriteDirectory() normally. + */ - return TIFFWriteDirectory( tif ); + return TIFFWriteDirectory(tif); -static int -TIFFWriteDirectorySec(TIFF* tif, int isimage, int imagedone, uint64* pdiroff) +static int TIFFWriteDirectorySec(TIFF *tif, int isimage, int imagedone, + uint64_t *pdiroff) - static const char module[] = "TIFFWriteDirectorySec"; - uint32 ndir; - TIFFDirEntry* dir; - uint32 dirsize; - void* dirmem; - uint32 m; - if (tif->tif_mode == O_RDONLY) - return (1); + static const char module[] = "TIFFWriteDirectorySec"; + uint32_t ndir; + TIFFDirEntry *dir; + uint32_t dirsize; + void *dirmem; + uint32_t m; + if (tif->tif_mode == O_RDONLY) + return (1); - _TIFFFillStriles( tif ); - - /* - * Clear write state so that subsequent images with - * different characteristics get the right buffers - * setup for them. - */ - if (imagedone) - { - if (tif->tif_flags & TIFF_POSTENCODE) - { - tif->tif_flags &= ~TIFF_POSTENCODE; - if (!(*tif->tif_postencode)(tif)) - { - TIFFErrorExt(tif->tif_clientdata,module, - "Error post-encoding before directory write"); - return (0); - } - } - (*tif->tif_close)(tif); /* shutdown encoder */ - /* - * Flush any data that might have been written - * by the compression close+cleanup routines. But - * be careful not to write stuff if we didn't add data - * in the previous steps as the "rawcc" data may well be - * a previously read tile/strip in mixed read/write mode. - */ - if (tif->tif_rawcc > 0 - && (tif->tif_flags & TIFF_BEENWRITING) != 0 ) - { - if( !TIFFFlushData1(tif) ) - { - TIFFErrorExt(tif->tif_clientdata, module, - "Error flushing data before directory write"); - return (0); - } - } - if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) - { - _TIFFfree(tif->tif_rawdata); - tif->tif_rawdata = NULL; - tif->tif_rawcc = 0; - tif->tif_rawdatasize = 0; - tif->tif_rawdataoff = 0; - tif->tif_rawdataloaded = 0; - } - tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP); - } - dir=NULL; - dirmem=NULL; - dirsize=0; - while (1) - { - ndir=0; - if (isimage) - { - if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS)) - { - if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_IMAGEWIDTH,tif->tif_dir.td_imagewidth)) - goto bad; - if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_IMAGELENGTH,tif->tif_dir.td_imagelength)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS)) - { - if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_TILEWIDTH,tif->tif_dir.td_tilewidth)) - goto bad; - if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_TILELENGTH,tif->tif_dir.td_tilelength)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_RESOLUTION)) - { - if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_XRESOLUTION,tif->tif_dir.td_xresolution)) - goto bad; - if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_YRESOLUTION,tif->tif_dir.td_yresolution)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_POSITION)) - { - if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_XPOSITION,tif->tif_dir.td_xposition)) - goto bad; - if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_YPOSITION,tif->tif_dir.td_yposition)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) - { - if (!TIFFWriteDirectoryTagLong(tif,&ndir,dir,TIFFTAG_SUBFILETYPE,tif->tif_dir.td_subfiletype)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE)) - { - if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_BITSPERSAMPLE,tif->tif_dir.td_bitspersample)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_COMPRESSION)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_COMPRESSION,tif->tif_dir.td_compression)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_PHOTOMETRIC,tif->tif_dir.td_photometric)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_THRESHHOLDING)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_THRESHHOLDING,tif->tif_dir.td_threshholding)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_FILLORDER)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_FILLORDER,tif->tif_dir.td_fillorder)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_ORIENTATION)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_ORIENTATION,tif->tif_dir.td_orientation)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_SAMPLESPERPIXEL,tif->tif_dir.td_samplesperpixel)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_ROWSPERSTRIP)) - { - if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_ROWSPERSTRIP,tif->tif_dir.td_rowsperstrip)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_MINSAMPLEVALUE)) - { - if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_MINSAMPLEVALUE,tif->tif_dir.td_minsamplevalue)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE)) - { - if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_MAXSAMPLEVALUE,tif->tif_dir.td_maxsamplevalue)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_PLANARCONFIG)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_PLANARCONFIG,tif->tif_dir.td_planarconfig)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT)) - { - if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_RESOLUTIONUNIT,tif->tif_dir.td_resolutionunit)) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_PAGENUMBER)) - { - if (!TIFFWriteDirectoryTagShortArray(tif,&ndir,dir,TIFFTAG_PAGENUMBER,2,&tif->tif_dir.td_pagenumber[0])) - goto bad; - } - if (TIFFFieldSet(tif,FIELD_STRIPBYTECOUNTS)) - { - if (!isTiled(tif)) - { - if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_STRIPBYTECOUNTS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripbytecount_p)) - goto bad; - } - else - { - if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_TILEBYTECOUNTS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripbytecount_p)) - goto bad; - } - } - if (TIFFFieldSet(tif,FIELD_STRIPOFFSETS)) - { - if (!isTiled(tif)) - { + _TIFFFillStriles(tif); + + /* + * Clear write state so that subsequent images with + * different characteristics get the right buffers + * setup for them. + */ + if (imagedone) + { + if (tif->tif_flags & TIFF_POSTENCODE) + { + tif->tif_flags &= ~TIFF_POSTENCODE; + if (!(*tif->tif_postencode)(tif)) + { + TIFFErrorExtR(tif, module, + "Error post-encoding before directory write"); + return (0); + } + } + (*tif->tif_close)(tif); /* shutdown encoder */ + /* + * Flush any data that might have been written + * by the compression close+cleanup routines. But + * be careful not to write stuff if we didn't add data + * in the previous steps as the "rawcc" data may well be + * a previously read tile/strip in mixed read/write mode. + */ + if (tif->tif_rawcc > 0 && (tif->tif_flags & TIFF_BEENWRITING) != 0) + { + if (!TIFFFlushData1(tif)) + { + TIFFErrorExtR(tif, module, + "Error flushing data before directory write"); + return (0); + } + } + if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) + { + _TIFFfreeExt(tif, tif->tif_rawdata); + tif->tif_rawdata = NULL; + tif->tif_rawcc = 0; + tif->tif_rawdatasize = 0; + tif->tif_rawdataoff = 0; + tif->tif_rawdataloaded = 0; + } + tif->tif_flags &= ~(TIFF_BEENWRITING | TIFF_BUFFERSETUP); + } + + if (TIFFFieldSet(tif, FIELD_COMPRESSION) && + (tif->tif_dir.td_compression == COMPRESSION_DEFLATE)) + { + TIFFWarningExtR(tif, module, + "Creating TIFF with legacy Deflate codec identifier, " + "COMPRESSION_ADOBE_DEFLATE is more widely supported"); + } + dir = NULL; + dirmem = NULL; + dirsize = 0; + while (1) + { + ndir = 0; + if (isimage) + { + if (TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) + { + if (!TIFFWriteDirectoryTagShortLong(tif, &ndir, dir, + TIFFTAG_IMAGEWIDTH, + tif->tif_dir.td_imagewidth)) + goto bad; + if (!TIFFWriteDirectoryTagShortLong( + tif, &ndir, dir, TIFFTAG_IMAGELENGTH, + tif->tif_dir.td_imagelength)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_TILEDIMENSIONS)) + { + if (!TIFFWriteDirectoryTagShortLong(tif, &ndir, dir, + TIFFTAG_TILEWIDTH, + tif->tif_dir.td_tilewidth)) + goto bad; + if (!TIFFWriteDirectoryTagShortLong(tif, &ndir, dir, + TIFFTAG_TILELENGTH, + tif->tif_dir.td_tilelength)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_RESOLUTION)) + { + if (!TIFFWriteDirectoryTagRational(tif, &ndir, dir, + TIFFTAG_XRESOLUTION, + tif->tif_dir.td_xresolution)) + goto bad; + if (!TIFFWriteDirectoryTagRational(tif, &ndir, dir, + TIFFTAG_YRESOLUTION, + tif->tif_dir.td_yresolution)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_POSITION)) + { + if (!TIFFWriteDirectoryTagRational(tif, &ndir, dir, + TIFFTAG_XPOSITION, + tif->tif_dir.td_xposition)) + goto bad; + if (!TIFFWriteDirectoryTagRational(tif, &ndir, dir, + TIFFTAG_YPOSITION, + tif->tif_dir.td_yposition)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_SUBFILETYPE)) + { + if (!TIFFWriteDirectoryTagLong(tif, &ndir, dir, + TIFFTAG_SUBFILETYPE, + tif->tif_dir.td_subfiletype)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_BITSPERSAMPLE)) + { + if (!TIFFWriteDirectoryTagShortPerSample( + tif, &ndir, dir, TIFFTAG_BITSPERSAMPLE, + tif->tif_dir.td_bitspersample)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_COMPRESSION)) + { + if (!TIFFWriteDirectoryTagShort(tif, &ndir, dir, + TIFFTAG_COMPRESSION, + tif->tif_dir.td_compression)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_PHOTOMETRIC)) + { + if (!TIFFWriteDirectoryTagShort(tif, &ndir, dir, + TIFFTAG_PHOTOMETRIC, + tif->tif_dir.td_photometric)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_THRESHHOLDING)) + { + if (!TIFFWriteDirectoryTagShort(tif, &ndir, dir, + TIFFTAG_THRESHHOLDING, + tif->tif_dir.td_threshholding)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_FILLORDER)) + { + if (!TIFFWriteDirectoryTagShort(tif, &ndir, dir, + TIFFTAG_FILLORDER, + tif->tif_dir.td_fillorder)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_ORIENTATION)) + { + if (!TIFFWriteDirectoryTagShort(tif, &ndir, dir, + TIFFTAG_ORIENTATION, + tif->tif_dir.td_orientation)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_SAMPLESPERPIXEL)) + { + if (!TIFFWriteDirectoryTagShort( + tif, &ndir, dir, TIFFTAG_SAMPLESPERPIXEL, + tif->tif_dir.td_samplesperpixel)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_ROWSPERSTRIP)) + { + if (!TIFFWriteDirectoryTagShortLong( + tif, &ndir, dir, TIFFTAG_ROWSPERSTRIP, + tif->tif_dir.td_rowsperstrip)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_MINSAMPLEVALUE)) + { + if (!TIFFWriteDirectoryTagShortPerSample( + tif, &ndir, dir, TIFFTAG_MINSAMPLEVALUE, + tif->tif_dir.td_minsamplevalue)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_MAXSAMPLEVALUE)) + { + if (!TIFFWriteDirectoryTagShortPerSample( + tif, &ndir, dir, TIFFTAG_MAXSAMPLEVALUE, + tif->tif_dir.td_maxsamplevalue)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_PLANARCONFIG)) + { + if (!TIFFWriteDirectoryTagShort(tif, &ndir, dir, + TIFFTAG_PLANARCONFIG, + tif->tif_dir.td_planarconfig)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_RESOLUTIONUNIT)) + { + if (!TIFFWriteDirectoryTagShort(tif, &ndir, dir, + TIFFTAG_RESOLUTIONUNIT, + tif->tif_dir.td_resolutionunit)) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_PAGENUMBER)) + { + if (!TIFFWriteDirectoryTagShortArray( + tif, &ndir, dir, TIFFTAG_PAGENUMBER, 2, + &tif->tif_dir.td_pagenumber[0])) + goto bad; + } + if (TIFFFieldSet(tif, FIELD_STRIPBYTECOUNTS)) + { + if (!isTiled(tif)) + { + if (!TIFFWriteDirectoryTagLongLong8Array( + tif, &ndir, dir, TIFFTAG_STRIPBYTECOUNTS, + tif->tif_dir.td_nstrips, + tif->tif_dir.td_stripbytecount_p)) + goto bad; + } + else + { + if (!TIFFWriteDirectoryTagLongLong8Array( + tif, &ndir, dir, TIFFTAG_TILEBYTECOUNTS, + tif->tif_dir.td_nstrips, + tif->tif_dir.td_stripbytecount_p)) + goto bad; + } + } + if (TIFFFieldSet(tif, FIELD_STRIPOFFSETS)) + { + if (!isTiled(tif)) + {
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_dirwrite.c
249
250
251
252
253
254
255
256
257
258
{ return TIFFWriteDirectorySec(tif,FALSE,FALSE,pdiroff); } /* * Similar to TIFFWriteDirectory(), but if the directory has already * been written once, it is relocated to the end of the file, in case it * has changed in size. Note that this will result in the loss of the * previously used directory space. */
+ show +
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
int TIFFRewriteDirectory( TIFF *tif ) { static const char module[] = "TIFFRewriteDirectory"; /* We don't need to do anything special if it hasn't been written. */ if( tif->tif_diroff == 0 ) return TIFFWriteDirectory( tif ); /* * Find and zero the pointer to this directory, so that TIFFLinkDirectory * will cause it to be added after this directories current pre-link. */ if (!(tif->tif_flags&TIFF_BIGTIFF)) { if (tif->tif_header.classic.tiff_diroff == tif->tif_diroff) { tif->tif_header.classic.tiff_diroff = 0; tif->tif_diroff = 0; TIFFSeekFile(tif,4,SEEK_SET); if (!WriteOK(tif, &(tif->tif_header.classic.tiff_diroff),4)) { TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error updating TIFF header"); return (0); } } else { uint32 nextdir; nextdir = tif->tif_header.classic.tiff_diroff; while(1) { uint16 dircount; uint32 nextnextdir; if (!SeekOK(tif, nextdir) || !ReadOK(tif, &dircount, 2)) { TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory count"); return (0); } if (tif->tif_flags & TIFF_SWAB) TIFFSwabShort(&dircount); (void) TIFFSeekFile(tif, nextdir+2+dircount*12, SEEK_SET); if (!ReadOK(tif, &nextnextdir, 4)) { TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory link"); return (0); } if (tif->tif_flags & TIFF_SWAB) TIFFSwabLong(&nextnextdir); if (nextnextdir==tif->tif_diroff) { uint32 m; m=0; (void) TIFFSeekFile(tif, nextdir+2+dircount*12, SEEK_SET); if (!WriteOK(tif, &m, 4)) { TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link"); return (0); } tif->tif_diroff=0; break; } nextdir=nextnextdir; } } } else { if (tif->tif_header.big.tiff_diroff == tif->tif_diroff) { tif->tif_header.big.tiff_diroff = 0; tif->tif_diroff = 0; TIFFSeekFile(tif,8,SEEK_SET); if (!WriteOK(tif, &(tif->tif_header.big.tiff_diroff),8)) { TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error updating TIFF header"); return (0); } } else { uint64 nextdir; nextdir = tif->tif_header.big.tiff_diroff; while(1) { uint64 dircount64; uint16 dircount; uint64 nextnextdir; if (!SeekOK(tif, nextdir) || !ReadOK(tif, &dircount64, 8)) { TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory count"); return (0); } if (tif->tif_flags & TIFF_SWAB) TIFFSwabLong8(&dircount64); if (dircount64>0xFFFF) { TIFFErrorExt(tif->tif_clientdata, module, "Sanity check on tag count failed, likely corrupt TIFF"); return (0); } dircount=(uint16)dircount64; (void) TIFFSeekFile(tif, nextdir+8+dircount*20, SEEK_SET); if (!ReadOK(tif, &nextnextdir, 8)) { TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory link"); return (0); } if (tif->tif_flags & TIFF_SWAB) TIFFSwabLong8(&nextnextdir); if (nextnextdir==tif->tif_diroff) { uint64 m; m=0; (void) TIFFSeekFile(tif, nextdir+8+dircount*20, SEEK_SET); if (!WriteOK(tif, &m, 8)) { TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link"); return (0); } tif->tif_diroff=0; break; } nextdir=nextnextdir; } } } /* * Now use TIFFWriteDirectory() normally. */ return TIFFWriteDirectory( tif ); } static int TIFFWriteDirectorySec(TIFF* tif, int isimage, int imagedone, uint64* pdiroff) { static const char module[] = "TIFFWriteDirectorySec"; uint32 ndir; TIFFDirEntry* dir; uint32 dirsize; void* dirmem; uint32 m; if (tif->tif_mode == O_RDONLY) return (1); _TIFFFillStriles( tif ); /* * Clear write state so that subsequent images with * different characteristics get the right buffers * setup for them. */ if (imagedone) { if (tif->tif_flags & TIFF_POSTENCODE) { tif->tif_flags &= ~TIFF_POSTENCODE; if (!(*tif->tif_postencode)(tif)) { TIFFErrorExt(tif->tif_clientdata,module, "Error post-encoding before directory write"); return (0); } } (*tif->tif_close)(tif); /* shutdown encoder */ /* * Flush any data that might have been written * by the compression close+cleanup routines. But * be careful not to write stuff if we didn't add data * in the previous steps as the "rawcc" data may well be * a previously read tile/strip in mixed read/write mode. */ if (tif->tif_rawcc > 0 && (tif->tif_flags & TIFF_BEENWRITING) != 0 ) { if( !TIFFFlushData1(tif) ) { TIFFErrorExt(tif->tif_clientdata, module, "Error flushing data before directory write"); return (0); } } if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) { _TIFFfree(tif->tif_rawdata); tif->tif_rawdata = NULL; tif->tif_rawcc = 0; tif->tif_rawdatasize = 0; tif->tif_rawdataoff = 0; tif->tif_rawdataloaded = 0; } tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP); } dir=NULL; dirmem=NULL; dirsize=0; while (1) { ndir=0; if (isimage) { if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS)) { if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_IMAGEWIDTH,tif->tif_dir.td_imagewidth)) goto bad; if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_IMAGELENGTH,tif->tif_dir.td_imagelength)) goto bad; } if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS)) { if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_TILEWIDTH,tif->tif_dir.td_tilewidth)) goto bad; if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_TILELENGTH,tif->tif_dir.td_tilelength)) goto bad; } if (TIFFFieldSet(tif,FIELD_RESOLUTION)) { if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_XRESOLUTION,tif->tif_dir.td_xresolution)) goto bad; if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_YRESOLUTION,tif->tif_dir.td_yresolution)) goto bad; } if (TIFFFieldSet(tif,FIELD_POSITION)) { if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_XPOSITION,tif->tif_dir.td_xposition)) goto bad; if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_YPOSITION,tif->tif_dir.td_yposition)) goto bad; } if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) { if (!TIFFWriteDirectoryTagLong(tif,&ndir,dir,TIFFTAG_SUBFILETYPE,tif->tif_dir.td_subfiletype)) goto bad; } if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE)) { if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_BITSPERSAMPLE,tif->tif_dir.td_bitspersample)) goto bad; } if (TIFFFieldSet(tif,FIELD_COMPRESSION)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_COMPRESSION,tif->tif_dir.td_compression)) goto bad; } if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_PHOTOMETRIC,tif->tif_dir.td_photometric)) goto bad; } if (TIFFFieldSet(tif,FIELD_THRESHHOLDING)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_THRESHHOLDING,tif->tif_dir.td_threshholding)) goto bad; } if (TIFFFieldSet(tif,FIELD_FILLORDER)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_FILLORDER,tif->tif_dir.td_fillorder)) goto bad; } if (TIFFFieldSet(tif,FIELD_ORIENTATION)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_ORIENTATION,tif->tif_dir.td_orientation)) goto bad; } if (TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_SAMPLESPERPIXEL,tif->tif_dir.td_samplesperpixel)) goto bad; } if (TIFFFieldSet(tif,FIELD_ROWSPERSTRIP)) { if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_ROWSPERSTRIP,tif->tif_dir.td_rowsperstrip)) goto bad; } if (TIFFFieldSet(tif,FIELD_MINSAMPLEVALUE)) { if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_MINSAMPLEVALUE,tif->tif_dir.td_minsamplevalue)) goto bad; } if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE)) { if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_MAXSAMPLEVALUE,tif->tif_dir.td_maxsamplevalue)) goto bad; } if (TIFFFieldSet(tif,FIELD_PLANARCONFIG)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_PLANARCONFIG,tif->tif_dir.td_planarconfig)) goto bad; } if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT)) { if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_RESOLUTIONUNIT,tif->tif_dir.td_resolutionunit)) goto bad; } if (TIFFFieldSet(tif,FIELD_PAGENUMBER)) { if (!TIFFWriteDirectoryTagShortArray(tif,&ndir,dir,TIFFTAG_PAGENUMBER,2,&tif->tif_dir.td_pagenumber[0])) goto bad; } if (TIFFFieldSet(tif,FIELD_STRIPBYTECOUNTS)) { if (!isTiled(tif)) { if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_STRIPBYTECOUNTS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripbytecount_p)) goto bad; } else { if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_TILEBYTECOUNTS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripbytecount_p)) goto bad; } } if (TIFFFieldSet(tif,FIELD_STRIPOFFSETS)) { if (!isTiled(tif))
+ show +
587
588
589
590
591
592
593
594
595
596
{ /* td_stripoffset_p might be NULL in an odd OJPEG case. See * tif_dirread.c around line 3634. * XXX: OJPEG hack. * If a) compression is OJPEG, b) it's not a tiled TIFF, * and c) the number of strips is 1, * then we tolerate the absence of stripoffsets tag, * because, presumably, all required data is in the * JpegInterchangeFormat stream. * We can get here when using tiffset on such a file.

[CVE-2023-40093_1.diff] tif_packbits.c #2
-static int -PackBitsPreEncode(TIFF* tif, uint16 s) +static int PackBitsPreEncode(TIFF *tif, uint16_t s) - (void) s; + (void)s; - tif->tif_data = (uint8*)_TIFFmalloc(sizeof(tmsize_t)); - if (tif->tif_data == NULL) - return (0); - /* - * Calculate the scanline/tile-width size in bytes. - */ - if (isTiled(tif)) - *(tmsize_t*)tif->tif_data = TIFFTileRowSize(tif); - else - *(tmsize_t*)tif->tif_data = TIFFScanlineSize(tif); - return (1); + tif->tif_data = (uint8_t *)_TIFFmallocExt(tif, sizeof(tmsize_t)); + if (tif->tif_data == NULL) + return (0); + /* + * Calculate the scanline/tile-width size in bytes. + */ + if (isTiled(tif)) + *(tmsize_t *)tif->tif_data = TIFFTileRowSize(tif); + else + *(tmsize_t *)tif->tif_data = TIFFScanlineSize(tif); + return (1); -static int -PackBitsPostEncode(TIFF* tif) +static int PackBitsPostEncode(TIFF *tif) - if (tif->tif_data) - _TIFFfree(tif->tif_data); - return (1); + if (tif->tif_data) + _TIFFfreeExt(tif, tif->tif_data); + return (1); -static int -PackBitsEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s) +static int PackBitsEncode(TIFF *tif, uint8_t *buf, tmsize_t cc, uint16_t s) - unsigned char* bp = (unsigned char*) buf; - uint8* op; - uint8* ep; - uint8* lastliteral; - long n, slop; - int b; - enum { BASE, LITERAL, RUN, LITERAL_RUN } state; + unsigned char *bp = (unsigned char *)buf; + uint8_t *op; + uint8_t *ep; + uint8_t *lastliteral; + long n, slop; + int b; + enum + { + BASE, + LITERAL, + RUN, + LITERAL_RUN + } state; - (void) s; - op = tif->tif_rawcp; - ep = tif->tif_rawdata + tif->tif_rawdatasize; - state = BASE; - lastliteral = 0; - while (cc > 0) { - /* - * Find the longest string of identical bytes. - */ - b = *bp++; - cc--; - n = 1; - for (; cc > 0 && b == *bp; cc--, bp++) - n++; - again: - if (op + 2 >= ep) { /* insure space for new data */ - /* - * Be careful about writing the last - * literal. Must write up to that point - * and then copy the remainder to the - * front of the buffer. - */ - if (state == LITERAL || state == LITERAL_RUN) { - slop = (long)(op - lastliteral); - tif->tif_rawcc += (tmsize_t)(lastliteral - tif->tif_rawcp); - if (!TIFFFlushData1(tif)) - return (0); - op = tif->tif_rawcp; - while (slop-- > 0) - *op++ = *lastliteral++; - lastliteral = tif->tif_rawcp; - } else { - tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); - if (!TIFFFlushData1(tif)) - return (0); - op = tif->tif_rawcp; - } - } - switch (state) { - case BASE: /* initial state, set run/literal */ - if (n > 1) { - state = RUN; - if (n > 128) { - *op++ = (uint8) -127; - *op++ = (uint8) b; - n -= 128; - goto again; - } - *op++ = (uint8)(-(n-1)); - *op++ = (uint8) b; - } else { - lastliteral = op; - *op++ = 0; - *op++ = (uint8) b; - state = LITERAL; - } - break; - case LITERAL: /* last object was literal string */ - if (n > 1) { - state = LITERAL_RUN; - if (n > 128) { - *op++ = (uint8) -127; - *op++ = (uint8) b; - n -= 128; - goto again; - } - *op++ = (uint8)(-(n-1)); /* encode run */ - *op++ = (uint8) b; - } else { /* extend literal */ - if (++(*lastliteral) == 127) - state = BASE; - *op++ = (uint8) b; - } - break; - case RUN: /* last object was run */ - if (n > 1) { - if (n > 128) { - *op++ = (uint8) -127; - *op++ = (uint8) b; - n -= 128; - goto again; - } - *op++ = (uint8)(-(n-1)); - *op++ = (uint8) b; - } else { - lastliteral = op; - *op++ = 0; - *op++ = (uint8) b; - state = LITERAL; - } - break; - case LITERAL_RUN: /* literal followed by a run */ - /* - * Check to see if previous run should - * be converted to a literal, in which - * case we convert literal-run-literal - * to a single literal. - */ - if (n == 1 && op[-2] == (uint8) -1 && - *lastliteral < 126) { - state = (((*lastliteral) += 2) == 127 ? - BASE : LITERAL); - op[-2] = op[-1]; /* replicate */ - } else - state = RUN; - goto again; - } - } - tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); - tif->tif_rawcp = op; - return (1); + (void)s; + op = tif->tif_rawcp; + ep = tif->tif_rawdata + tif->tif_rawdatasize; + state = BASE; + lastliteral = 0; + while (cc > 0) + { + /* + * Find the longest string of identical bytes. + */ + b = *bp++; + cc--; + n = 1; + for (; cc > 0 && b == *bp; cc--, bp++) + n++; + again: + if (op + 2 >= ep) + { /* insure space for new data */ + /* + * Be careful about writing the last + * literal. Must write up to that point + * and then copy the remainder to the + * front of the buffer. + */ + if (state == LITERAL || state == LITERAL_RUN) + { + slop = (long)(op - lastliteral); + tif->tif_rawcc += (tmsize_t)(lastliteral - tif->tif_rawcp); + if (!TIFFFlushData1(tif)) + return (0); + op = tif->tif_rawcp; + while (slop-- > 0) + *op++ = *lastliteral++; + lastliteral = tif->tif_rawcp; + } + else + { + tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); + if (!TIFFFlushData1(tif)) + return (0); + op = tif->tif_rawcp; + } + } + switch (state) + { + case BASE: /* initial state, set run/literal */ + if (n > 1) + { + state = RUN; + if (n > 128) + { + *op++ = (uint8_t)-127; + *op++ = (uint8_t)b; + n -= 128; + goto again; + } + *op++ = (uint8_t)(-(n - 1)); + *op++ = (uint8_t)b; + } + else + { + lastliteral = op; + *op++ = 0; + *op++ = (uint8_t)b; + state = LITERAL; + } + break; + case LITERAL: /* last object was literal string */ + if (n > 1) + { + state = LITERAL_RUN; + if (n > 128) + { + *op++ = (uint8_t)-127; + *op++ = (uint8_t)b; + n -= 128; + goto again; + } + *op++ = (uint8_t)(-(n - 1)); /* encode run */ + *op++ = (uint8_t)b; + } + else + { /* extend literal */ + if (++(*lastliteral) == 127) + state = BASE; + *op++ = (uint8_t)b; + } + break; + case RUN: /* last object was run */ + if (n > 1) + { + if (n > 128) + { + *op++ = (uint8_t)-127; + *op++ = (uint8_t)b; + n -= 128; + goto again; + } + *op++ = (uint8_t)(-(n - 1)); + *op++ = (uint8_t)b; + } + else + { + lastliteral = op; + *op++ = 0; + *op++ = (uint8_t)b; + state = LITERAL; + } + break; + case LITERAL_RUN: /* literal followed by a run */ + /* + * Check to see if previous run should + * be converted to a literal, in which + * case we convert literal-run-literal + * to a single literal. + */ + if (n == 1 && op[-2] == (uint8_t)-1 && *lastliteral < 126) + { + state = (((*lastliteral) += 2) == 127 ? BASE : LITERAL); + op[-2] = op[-1]; /* replicate */ + } + else + state = RUN; + goto again; + } + } + tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); + tif->tif_rawcp = op; + return (1);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_packbits.c
24
25
26
27
28
29
30
31
32
33
#include "tiffiop.h" #ifdef PACKBITS_SUPPORT /* * TIFF Library. * * PackBits Compression Algorithm Support */ #include <stdio.h>
+ show +
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
static int PackBitsPreEncode(TIFF* tif, uint16 s) { (void) s; tif->tif_data = (uint8*)_TIFFmalloc(sizeof(tmsize_t)); if (tif->tif_data == NULL) return (0); /* * Calculate the scanline/tile-width size in bytes. */ if (isTiled(tif)) *(tmsize_t*)tif->tif_data = TIFFTileRowSize(tif); else *(tmsize_t*)tif->tif_data = TIFFScanlineSize(tif); return (1); } static int PackBitsPostEncode(TIFF* tif) { if (tif->tif_data) _TIFFfree(tif->tif_data); return (1); } /* * Encode a run of pixels. */ static int PackBitsEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s) { unsigned char* bp = (unsigned char*) buf; uint8* op; uint8* ep; uint8* lastliteral; long n, slop; int b; enum { BASE, LITERAL, RUN, LITERAL_RUN } state; (void) s; op = tif->tif_rawcp; ep = tif->tif_rawdata + tif->tif_rawdatasize; state = BASE; lastliteral = 0; while (cc > 0) { /* * Find the longest string of identical bytes. */ b = *bp++; cc--; n = 1; for (; cc > 0 && b == *bp; cc--, bp++) n++; again: if (op + 2 >= ep) { /* insure space for new data */ /* * Be careful about writing the last * literal. Must write up to that point * and then copy the remainder to the * front of the buffer. */ if (state == LITERAL || state == LITERAL_RUN) { slop = (long)(op - lastliteral); tif->tif_rawcc += (tmsize_t)(lastliteral - tif->tif_rawcp); if (!TIFFFlushData1(tif)) return (0); op = tif->tif_rawcp; while (slop-- > 0) *op++ = *lastliteral++; lastliteral = tif->tif_rawcp; } else { tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); if (!TIFFFlushData1(tif)) return (0); op = tif->tif_rawcp; } } switch (state) { case BASE: /* initial state, set run/literal */ if (n > 1) { state = RUN; if (n > 128) { *op++ = (uint8) -127; *op++ = (uint8) b; n -= 128; goto again; } *op++ = (uint8)(-(n-1)); *op++ = (uint8) b; } else { lastliteral = op; *op++ = 0; *op++ = (uint8) b; state = LITERAL; } break; case LITERAL: /* last object was literal string */ if (n > 1) { state = LITERAL_RUN; if (n > 128) { *op++ = (uint8) -127; *op++ = (uint8) b; n -= 128; goto again; } *op++ = (uint8)(-(n-1)); /* encode run */ *op++ = (uint8) b; } else { /* extend literal */ if (++(*lastliteral) == 127) state = BASE; *op++ = (uint8) b; } break; case RUN: /* last object was run */ if (n > 1) { if (n > 128) { *op++ = (uint8) -127; *op++ = (uint8) b; n -= 128; goto again; } *op++ = (uint8)(-(n-1)); *op++ = (uint8) b; } else { lastliteral = op; *op++ = 0; *op++ = (uint8) b; state = LITERAL; } break; case LITERAL_RUN: /* literal followed by a run */ /* * Check to see if previous run should * be converted to a literal, in which * case we convert literal-run-literal * to a single literal. */ if (n == 1 && op[-2] == (uint8) -1 && *lastliteral < 126) { state = (((*lastliteral) += 2) == 127 ? BASE : LITERAL); op[-2] = op[-1]; /* replicate */ } else state = RUN; goto again; } } tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); tif->tif_rawcp = op; return (1);
+ show +
185
186
187
188
189
190
191
192
193
194
} /* * Encode a rectangular chunk of pixels. We break it up * into row-sized pieces to insure that encoded runs do * not span rows. Otherwise, there can be problems with * the decoder if data is read, for example, by scanlines * when it was encoded by strips. */ static int

[CVE-2023-40093_1.diff] tif_fax3.c #4
-#define DECLARE_STATE(tif, sp, mod) \ - static const char module[] = mod; \ - Fax3CodecState* sp = DecoderState(tif); \ - int a0; /* reference element */ \ - int lastx = sp->b.rowpixels; /* last element in row */ \ - uint32 BitAcc; /* bit accumulator */ \ - int BitsAvail; /* # valid bits in BitAcc */ \ - int RunLength; /* length of current run */ \ - unsigned char* cp; /* next byte of input data */ \ - unsigned char* ep; /* end of input data */ \ - uint32* pa; /* place to stuff next run */ \ - uint32* thisrun; /* current row's run array */ \ - int EOLcnt; /* # EOL codes recognized */ \ - const unsigned char* bitmap = sp->bitmap; /* input data bit reverser */ \ - const TIFFFaxTabEnt* TabEnt -#define DECLARE_STATE_2D(tif, sp, mod) \ - DECLARE_STATE(tif, sp, mod); \ - int b1; /* next change on prev line */ \ - uint32* pb /* next run in reference line */\ -/* - * Load any state that may be changed during decoding. - */ -#define CACHE_STATE(tif, sp) do { \ - BitAcc = sp->data; \ - BitsAvail = sp->bit; \ - EOLcnt = sp->EOLcnt; \ - cp = (unsigned char*) tif->tif_rawcp; \ - ep = cp + tif->tif_rawcc; \ -} while (0) +#define DECLARE_STATE(tif, sp, mod) \ + static const char module[] = mod; \ + Fax3CodecState *sp = DecoderState(tif); \ + int a0; /* reference element */ \ + int lastx = sp->b.rowpixels; /* last element in row */ \ + uint32_t BitAcc; /* bit accumulator */ \ + int BitsAvail; /* # valid bits in BitAcc */ \ + int RunLength; /* length of current run */ \ + unsigned char *cp; /* next byte of input data */ \ + unsigned char *ep; /* end of input data */ \ + uint32_t *pa; /* place to stuff next run */ \ + uint32_t *thisrun; /* current row's run array */ \ + int EOLcnt; /* # EOL codes recognized */ \ + const unsigned char *bitmap = sp->bitmap; /* input data bit reverser */ \ + const TIFFFaxTabEnt *TabEnt +#define DECLARE_STATE_2D(tif, sp, mod) \ + DECLARE_STATE(tif, sp, mod); \ + int b1; /* next change on prev line */ \ + uint32_t \ + *pb /* next run in reference line */ /* \ + * Load any state that may be \ + * changed during decoding. \ + */ +#define CACHE_STATE(tif, sp) \ + do \ + { \ + BitAcc = sp->data; \ + BitsAvail = sp->bit; \ + EOLcnt = sp->EOLcnt; \ + cp = (unsigned char *)tif->tif_rawcp; \ + ep = cp + tif->tif_rawcc; \ + } while (0) -#define UNCACHE_STATE(tif, sp) do { \ - sp->bit = BitsAvail; \ - sp->data = BitAcc; \ - sp->EOLcnt = EOLcnt; \ - tif->tif_rawcc -= (tmsize_t)((uint8*) cp - tif->tif_rawcp); \ - tif->tif_rawcp = (uint8*) cp; \ -} while (0) +#define UNCACHE_STATE(tif, sp) \ + do \ + { \ + sp->bit = BitsAvail; \ + sp->data = BitAcc; \ + sp->EOLcnt = EOLcnt; \ + tif->tif_rawcc -= (tmsize_t)((uint8_t *)cp - tif->tif_rawcp); \ + tif->tif_rawcp = (uint8_t *)cp; \ + } while (0) -static int -Fax3PreDecode(TIFF* tif, uint16 s) +static int Fax3PreDecode(TIFF *tif, uint16_t s) - Fax3CodecState* sp = DecoderState(tif); + Fax3CodecState *sp = DecoderState(tif); - (void) s; - assert(sp != NULL); - sp->bit = 0; /* force initial read */ - sp->data = 0; - sp->EOLcnt = 0; /* force initial scan for EOL */ - /* - * Decoder assumes lsb-to-msb bit order. Note that we select - * this here rather than in Fax3SetupState so that viewers can - * hold the image open, fiddle with the FillOrder tag value, - * and then re-decode the image. Otherwise they'd need to close - * and open the image to get the state reset. - */ - sp->bitmap = - TIFFGetBitRevTable(tif->tif_dir.td_fillorder != FILLORDER_LSB2MSB); - if (sp->refruns) { /* init reference line to white */ - sp->refruns[0] = (uint32) sp->b.rowpixels; - sp->refruns[1] = 0; - } - sp->line = 0; - return (1); + (void)s; + assert(sp != NULL); + sp->bit = 0; /* force initial read */ + sp->data = 0; + sp->EOLcnt = 0; /* force initial scan for EOL */ + /* + * Decoder assumes lsb-to-msb bit order. Note that we select + * this here rather than in Fax3SetupState so that viewers can + * hold the image open, fiddle with the FillOrder tag value, + * and then re-decode the image. Otherwise they'd need to close + * and open the image to get the state reset. + */ + sp->bitmap = + TIFFGetBitRevTable(tif->tif_dir.td_fillorder != FILLORDER_LSB2MSB); + sp->curruns = sp->runs; + if (sp->refruns) + { /* init reference line to white */ + sp->refruns = sp->runs + sp->nruns; + sp->refruns[0] = (uint32_t)sp->b.rowpixels; + sp->refruns[1] = 0; + } + sp->line = 0; + return (1);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_fax3.c
91
92
93
94
95
96
97
98
99
100
#define isAligned(p,t) ((((size_t)(p)) & (sizeof (t)-1)) == 0) /* * Group 3 and Group 4 Decoding. */ /* * These macros glue the TIFF library state to * the state expected by Frank's decoder. */
+ show +
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#define DECLARE_STATE(tif, sp, mod) \ static const char module[] = mod; \ Fax3CodecState* sp = DecoderState(tif); \ int a0; /* reference element */ \ int lastx = sp->b.rowpixels; /* last element in row */ \ uint32 BitAcc; /* bit accumulator */ \ int BitsAvail; /* # valid bits in BitAcc */ \ int RunLength; /* length of current run */ \ unsigned char* cp; /* next byte of input data */ \ unsigned char* ep; /* end of input data */ \ uint32* pa; /* place to stuff next run */ \ uint32* thisrun; /* current row's run array */ \ int EOLcnt; /* # EOL codes recognized */ \ const unsigned char* bitmap = sp->bitmap; /* input data bit reverser */ \ const TIFFFaxTabEnt* TabEnt #define DECLARE_STATE_2D(tif, sp, mod) \ DECLARE_STATE(tif, sp, mod); \ int b1; /* next change on prev line */ \ uint32* pb /* next run in reference line */\ /* * Load any state that may be changed during decoding. */ #define CACHE_STATE(tif, sp) do { \ BitAcc = sp->data; \ BitsAvail = sp->bit; \ EOLcnt = sp->EOLcnt; \ cp = (unsigned char*) tif->tif_rawcp; \ ep = cp + tif->tif_rawcc; \ } while (0) /* * Save state possibly changed during decoding. */ #define UNCACHE_STATE(tif, sp) do { \ sp->bit = BitsAvail; \ sp->data = BitAcc; \ sp->EOLcnt = EOLcnt; \ tif->tif_rawcc -= (tmsize_t)((uint8*) cp - tif->tif_rawcp); \ tif->tif_rawcp = (uint8*) cp; \ } while (0) /* * Setup state for decoding a strip. */ static int Fax3PreDecode(TIFF* tif, uint16 s) { Fax3CodecState* sp = DecoderState(tif); (void) s; assert(sp != NULL); sp->bit = 0; /* force initial read */ sp->data = 0; sp->EOLcnt = 0; /* force initial scan for EOL */ /* * Decoder assumes lsb-to-msb bit order. Note that we select * this here rather than in Fax3SetupState so that viewers can * hold the image open, fiddle with the FillOrder tag value, * and then re-decode the image. Otherwise they'd need to close * and open the image to get the state reset. */ sp->bitmap = TIFFGetBitRevTable(tif->tif_dir.td_fillorder != FILLORDER_LSB2MSB); if (sp->refruns) { /* init reference line to white */ sp->refruns[0] = (uint32) sp->b.rowpixels; sp->refruns[1] = 0; } sp->line = 0; return (1);
+ show +
169
170
171
172
173
174
175
176
177
178
} /* * Routine for handling various errors/conditions. * Note how they are "glued into the decoder" by * overriding the definitions used by the decoder. */ static void Fax3Unexpected(const char* module, TIFF* tif, uint32 line, uint32 a0)

[CVE-2023-40093_1.diff] tif_getimage.c #5
-int -TIFFReadRGBAImage(TIFF* tif, - uint32 rwidth, uint32 rheight, uint32* raster, int stop) +int TIFFReadRGBAImage(TIFF *tif, uint32_t rwidth, uint32_t rheight, + uint32_t *raster, int stop) - return TIFFReadRGBAImageOriented(tif, rwidth, rheight, raster, - ORIENTATION_BOTLEFT, stop); + return TIFFReadRGBAImageOriented(tif, rwidth, rheight, raster, + ORIENTATION_BOTLEFT, stop); -static int -setorientation(TIFFRGBAImage* img) +static int setorientation(TIFFRGBAImage *img) - switch (img->orientation) { - case ORIENTATION_TOPLEFT: - case ORIENTATION_LEFTTOP: - if (img->req_orientation == ORIENTATION_TOPRIGHT || - img->req_orientation == ORIENTATION_RIGHTTOP) - return FLIP_HORIZONTALLY; - else if (img->req_orientation == ORIENTATION_BOTRIGHT || - img->req_orientation == ORIENTATION_RIGHTBOT) - return FLIP_HORIZONTALLY | FLIP_VERTICALLY; - else if (img->req_orientation == ORIENTATION_BOTLEFT || - img->req_orientation == ORIENTATION_LEFTBOT) - return FLIP_VERTICALLY; - else - return 0; - case ORIENTATION_TOPRIGHT: - case ORIENTATION_RIGHTTOP: - if (img->req_orientation == ORIENTATION_TOPLEFT || - img->req_orientation == ORIENTATION_LEFTTOP) - return FLIP_HORIZONTALLY; - else if (img->req_orientation == ORIENTATION_BOTRIGHT || - img->req_orientation == ORIENTATION_RIGHTBOT) - return FLIP_VERTICALLY; - else if (img->req_orientation == ORIENTATION_BOTLEFT || - img->req_orientation == ORIENTATION_LEFTBOT) - return FLIP_HORIZONTALLY | FLIP_VERTICALLY; - else - return 0; - case ORIENTATION_BOTRIGHT: - case ORIENTATION_RIGHTBOT: - if (img->req_orientation == ORIENTATION_TOPLEFT || - img->req_orientation == ORIENTATION_LEFTTOP) - return FLIP_HORIZONTALLY | FLIP_VERTICALLY; - else if (img->req_orientation == ORIENTATION_TOPRIGHT || - img->req_orientation == ORIENTATION_RIGHTTOP) - return FLIP_VERTICALLY; - else if (img->req_orientation == ORIENTATION_BOTLEFT || - img->req_orientation == ORIENTATION_LEFTBOT) - return FLIP_HORIZONTALLY; - else - return 0; - case ORIENTATION_BOTLEFT: - case ORIENTATION_LEFTBOT: - if (img->req_orientation == ORIENTATION_TOPLEFT || - img->req_orientation == ORIENTATION_LEFTTOP) - return FLIP_VERTICALLY; - else if (img->req_orientation == ORIENTATION_TOPRIGHT || - img->req_orientation == ORIENTATION_RIGHTTOP) - return FLIP_HORIZONTALLY | FLIP_VERTICALLY; - else if (img->req_orientation == ORIENTATION_BOTRIGHT || - img->req_orientation == ORIENTATION_RIGHTBOT) - return FLIP_HORIZONTALLY; - else - return 0; - default: /* NOTREACHED */ - return 0; - } + switch (img->orientation) + { + case ORIENTATION_TOPLEFT: + case ORIENTATION_LEFTTOP: + if (img->req_orientation == ORIENTATION_TOPRIGHT || + img->req_orientation == ORIENTATION_RIGHTTOP) + return FLIP_HORIZONTALLY; + else if (img->req_orientation == ORIENTATION_BOTRIGHT || + img->req_orientation == ORIENTATION_RIGHTBOT) + return FLIP_HORIZONTALLY | FLIP_VERTICALLY; + else if (img->req_orientation == ORIENTATION_BOTLEFT || + img->req_orientation == ORIENTATION_LEFTBOT) + return FLIP_VERTICALLY; + else + return 0; + case ORIENTATION_TOPRIGHT: + case ORIENTATION_RIGHTTOP: + if (img->req_orientation == ORIENTATION_TOPLEFT || + img->req_orientation == ORIENTATION_LEFTTOP) + return FLIP_HORIZONTALLY; + else if (img->req_orientation == ORIENTATION_BOTRIGHT || + img->req_orientation == ORIENTATION_RIGHTBOT) + return FLIP_VERTICALLY; + else if (img->req_orientation == ORIENTATION_BOTLEFT || + img->req_orientation == ORIENTATION_LEFTBOT) + return FLIP_HORIZONTALLY | FLIP_VERTICALLY; + else + return 0; + case ORIENTATION_BOTRIGHT: + case ORIENTATION_RIGHTBOT: + if (img->req_orientation == ORIENTATION_TOPLEFT || + img->req_orientation == ORIENTATION_LEFTTOP) + return FLIP_HORIZONTALLY | FLIP_VERTICALLY; + else if (img->req_orientation == ORIENTATION_TOPRIGHT || + img->req_orientation == ORIENTATION_RIGHTTOP) + return FLIP_VERTICALLY; + else if (img->req_orientation == ORIENTATION_BOTLEFT || + img->req_orientation == ORIENTATION_LEFTBOT) + return FLIP_HORIZONTALLY; + else + return 0; + case ORIENTATION_BOTLEFT: + case ORIENTATION_LEFTBOT: + if (img->req_orientation == ORIENTATION_TOPLEFT || + img->req_orientation == ORIENTATION_LEFTTOP) + return FLIP_VERTICALLY; + else if (img->req_orientation == ORIENTATION_TOPRIGHT || + img->req_orientation == ORIENTATION_RIGHTTOP) + return FLIP_HORIZONTALLY | FLIP_VERTICALLY; + else if (img->req_orientation == ORIENTATION_BOTRIGHT || + img->req_orientation == ORIENTATION_RIGHTBOT) + return FLIP_HORIZONTALLY; + else + return 0; + default: /* NOTREACHED */ + return 0; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
535
536
537
538
539
540
541
542
543
544
TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg); ok = 0; } return (ok); } /* * Read the specified image into an ABGR-format raster. Use bottom left * origin for raster by default. */
+ show +
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
int TIFFReadRGBAImage(TIFF* tif, uint32 rwidth, uint32 rheight, uint32* raster, int stop) { return TIFFReadRGBAImageOriented(tif, rwidth, rheight, raster, ORIENTATION_BOTLEFT, stop); } static int setorientation(TIFFRGBAImage* img) { switch (img->orientation) { case ORIENTATION_TOPLEFT: case ORIENTATION_LEFTTOP: if (img->req_orientation == ORIENTATION_TOPRIGHT || img->req_orientation == ORIENTATION_RIGHTTOP) return FLIP_HORIZONTALLY; else if (img->req_orientation == ORIENTATION_BOTRIGHT || img->req_orientation == ORIENTATION_RIGHTBOT) return FLIP_HORIZONTALLY | FLIP_VERTICALLY; else if (img->req_orientation == ORIENTATION_BOTLEFT || img->req_orientation == ORIENTATION_LEFTBOT) return FLIP_VERTICALLY; else return 0; case ORIENTATION_TOPRIGHT: case ORIENTATION_RIGHTTOP: if (img->req_orientation == ORIENTATION_TOPLEFT || img->req_orientation == ORIENTATION_LEFTTOP) return FLIP_HORIZONTALLY; else if (img->req_orientation == ORIENTATION_BOTRIGHT || img->req_orientation == ORIENTATION_RIGHTBOT) return FLIP_VERTICALLY; else if (img->req_orientation == ORIENTATION_BOTLEFT || img->req_orientation == ORIENTATION_LEFTBOT) return FLIP_HORIZONTALLY | FLIP_VERTICALLY; else return 0; case ORIENTATION_BOTRIGHT: case ORIENTATION_RIGHTBOT: if (img->req_orientation == ORIENTATION_TOPLEFT || img->req_orientation == ORIENTATION_LEFTTOP) return FLIP_HORIZONTALLY | FLIP_VERTICALLY; else if (img->req_orientation == ORIENTATION_TOPRIGHT || img->req_orientation == ORIENTATION_RIGHTTOP) return FLIP_VERTICALLY; else if (img->req_orientation == ORIENTATION_BOTLEFT || img->req_orientation == ORIENTATION_LEFTBOT) return FLIP_HORIZONTALLY; else return 0; case ORIENTATION_BOTLEFT: case ORIENTATION_LEFTBOT: if (img->req_orientation == ORIENTATION_TOPLEFT || img->req_orientation == ORIENTATION_LEFTTOP) return FLIP_VERTICALLY; else if (img->req_orientation == ORIENTATION_TOPRIGHT || img->req_orientation == ORIENTATION_RIGHTTOP) return FLIP_HORIZONTALLY | FLIP_VERTICALLY; else if (img->req_orientation == ORIENTATION_BOTRIGHT || img->req_orientation == ORIENTATION_RIGHTBOT) return FLIP_HORIZONTALLY; else return 0; default: /* NOTREACHED */ return 0;
+ show +
611
612
613
614
615
616
617
618
619
620
} } /* * Get an tile-organized image that has * PlanarConfiguration contiguous if SamplesPerPixel > 1 * or * SamplesPerPixel == 1 */ static int

[CVE-2023-40093_1.diff] tif_getimage.c #9
- */ -static int -gtStripContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h) + */ +static int gtStripContig(TIFFRGBAImage *img, uint32_t *raster, uint32_t w, + uint32_t h) - TIFF* tif = img->tif; - tileContigRoutine put = img->put.contig; - uint32 row, y, nrow, nrowsub, rowstoread; - tmsize_t pos; - unsigned char* buf = NULL; - uint32 rowsperstrip; - uint16 subsamplinghor,subsamplingver; - uint32 imagewidth = img->width; - tmsize_t scanline; - int32 fromskew, toskew; - int ret = 1, flip; - tmsize_t maxstripsize; + TIFF *tif = img->tif; + tileContigRoutine put = img->put.contig; + uint32_t row, y, nrow, nrowsub, rowstoread; + tmsize_t pos; + unsigned char *buf = NULL; + uint32_t rowsperstrip; + uint16_t subsamplinghor, subsamplingver; + uint32_t imagewidth = img->width; + tmsize_t scanline; + int32_t fromskew, toskew; + int ret = 1, flip; + tmsize_t maxstripsize; - if ((tmsize_t)img->row_offset > TIFF_SSIZE_T_MAX || (size_t)h > (size_t)TIFF_SSIZE_T_MAX) - return (0); + if ((tmsize_t)img->row_offset > TIFF_SSIZE_T_MAX || + (size_t)h > (size_t)TIFF_SSIZE_T_MAX) + { + return (0); + } - TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, &subsamplinghor, &subsamplingver); - if( subsamplingver == 0 ) { - TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Invalid vertical YCbCr subsampling"); - return (0); - } - - maxstripsize = TIFFStripSize(tif); + TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, &subsamplinghor, + &subsamplingver); + if (subsamplingver == 0) + { + TIFFErrorExtR(tif, TIFFFileName(tif), + "Invalid vertical YCbCr subsampling"); + return (0); + } - flip = setorientation(img); - if (flip & FLIP_VERTICALLY) { - y = h - 1; - toskew = -(int32)(w + w); - } else { - y = 0; - toskew = -(int32)(w - w); - } + maxstripsize = TIFFStripSize(tif); - TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip); + flip = setorientation(img); + if (flip & FLIP_VERTICALLY) + { + if (w > INT_MAX) + { + TIFFErrorExtR(tif, TIFFFileName(tif), "Width overflow"); + return (0); + } + y = h - 1; + toskew = -(int32_t)(w + w); + } + else + { + y = 0; + toskew = -(int32_t)(w - w); + } - scanline = TIFFScanlineSize(tif); - fromskew = (w < imagewidth ? imagewidth - w : 0); - for (row = 0; row < h; row += nrow) - { - uint32 temp; - rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip; - nrow = (row + rowstoread > h ? h - row : rowstoread); - nrowsub = nrow; - if ((nrowsub%subsamplingver)!=0) - nrowsub+=subsamplingver-nrowsub%subsamplingver; - temp = (row + img->row_offset)%rowsperstrip + nrowsub; - if( scanline > 0 && temp > (size_t)(TIFF_TMSIZE_T_MAX / scanline) ) - { - TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in gtStripContig"); - return 0; - } - if (_TIFFReadEncodedStripAndAllocBuffer(tif, - TIFFComputeStrip(tif,row+img->row_offset, 0), - (void**)(&buf), - maxstripsize, - temp * scanline)==(tmsize_t)(-1) - && (buf == NULL || img->stoponerr)) - { - ret = 0; - break; - } + TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip); - pos = ((row + img->row_offset) % rowsperstrip) * scanline + \ - ((tmsize_t) img->col_offset * img->samplesperpixel); - (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, buf + pos); - y += ((flip & FLIP_VERTICALLY) ? -(int32) nrow : (int32) nrow); - } + scanline = TIFFScanlineSize(tif); + fromskew = (w < imagewidth ? imagewidth - w : 0); + for (row = 0; row < h; row += nrow) + { + uint32_t temp; + rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip; + nrow = (row + rowstoread > h ? h - row : rowstoread); + nrowsub = nrow; + if ((nrowsub % subsamplingver) != 0) + nrowsub += subsamplingver - nrowsub % subsamplingver; + temp = (row + img->row_offset) % rowsperstrip + nrowsub; + if (scanline > 0 && temp > (size_t)(TIFF_TMSIZE_T_MAX / scanline)) + { + TIFFErrorExtR(tif, TIFFFileName(tif), + "Integer overflow in gtStripContig"); + return 0; + } + if (_TIFFReadEncodedStripAndAllocBuffer( + tif, TIFFComputeStrip(tif, row + img->row_offset, 0), + (void **)(&buf), maxstripsize, + temp * scanline) == (tmsize_t)(-1) && + (buf == NULL || img->stoponerr)) + { + ret = 0; + break; + } - if (flip & FLIP_HORIZONTALLY) { - uint32 line; + pos = ((row + img->row_offset) % rowsperstrip) * scanline + + ((tmsize_t)img->col_offset * img->samplesperpixel); + tmsize_t roffset = (tmsize_t)y * w; + (*put)(img, raster + roffset, 0, y, w, nrow, fromskew, toskew, + buf + pos); + y += ((flip & FLIP_VERTICALLY) ? -(int32_t)nrow : (int32_t)nrow); + } - for (line = 0; line < h; line++) { - uint32 *left = raster + (line * w); - uint32 *right = left + w - 1; + if (flip & FLIP_HORIZONTALLY) + { + uint32_t line; - while ( left < right ) { - uint32 temp = *left; - *left = *right; - *right = temp; - left++; - right--; - } - } - } + for (line = 0; line < h; line++) + { + uint32_t *left = raster + (line * w); + uint32_t *right = left + w - 1; - _TIFFfree(buf); - return (ret); + while (left < right) + { + uint32_t temp = *left; + *left = *right; + *right = temp; + left++; + right--; + } + } + } + + _TIFFfreeExt(img->tif, buf); + return (ret);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
938
939
940
941
942
943
944
945
946
947
_TIFFfree(buf); return (ret); } /* * Get a strip-organized image that has * PlanarConfiguration contiguous if SamplesPerPixel > 1 * or * SamplesPerPixel == 1 */
+ show +
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
static int gtStripContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h) { TIFF* tif = img->tif; tileContigRoutine put = img->put.contig; uint32 row, y, nrow, nrowsub, rowstoread; tmsize_t pos; unsigned char* buf = NULL; uint32 rowsperstrip; uint16 subsamplinghor,subsamplingver; uint32 imagewidth = img->width; tmsize_t scanline; int32 fromskew, toskew; int ret = 1, flip; tmsize_t maxstripsize; if ((tmsize_t)img->row_offset > TIFF_SSIZE_T_MAX || (size_t)h > (size_t)TIFF_SSIZE_T_MAX) return (0); TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, &subsamplinghor, &subsamplingver); if( subsamplingver == 0 ) { TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Invalid vertical YCbCr subsampling"); return (0); } maxstripsize = TIFFStripSize(tif); flip = setorientation(img); if (flip & FLIP_VERTICALLY) { y = h - 1; toskew = -(int32)(w + w); } else { y = 0; toskew = -(int32)(w - w); } TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip); scanline = TIFFScanlineSize(tif); fromskew = (w < imagewidth ? imagewidth - w : 0); for (row = 0; row < h; row += nrow) { uint32 temp; rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip; nrow = (row + rowstoread > h ? h - row : rowstoread); nrowsub = nrow; if ((nrowsub%subsamplingver)!=0) nrowsub+=subsamplingver-nrowsub%subsamplingver; temp = (row + img->row_offset)%rowsperstrip + nrowsub; if( scanline > 0 && temp > (size_t)(TIFF_TMSIZE_T_MAX / scanline) ) { TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in gtStripContig"); return 0; } if (_TIFFReadEncodedStripAndAllocBuffer(tif, TIFFComputeStrip(tif,row+img->row_offset, 0), (void**)(&buf), maxstripsize, temp * scanline)==(tmsize_t)(-1) && (buf == NULL || img->stoponerr)) { ret = 0; break; } pos = ((row + img->row_offset) % rowsperstrip) * scanline + \ ((tmsize_t) img->col_offset * img->samplesperpixel); (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, buf + pos); y += ((flip & FLIP_VERTICALLY) ? -(int32) nrow : (int32) nrow); } if (flip & FLIP_HORIZONTALLY) { uint32 line; for (line = 0; line < h; line++) { uint32 *left = raster + (line * w); uint32 *right = left + w - 1; while ( left < right ) { uint32 temp = *left; *left = *right; *right = temp; left++; right--; } } } _TIFFfree(buf); return (ret);
+ show +
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
} /* * Get a strip-organized image with * SamplesPerPixel > 1 * PlanarConfiguration separated * We assume that all such images are RGB. */ static int gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)

[CVE-2023-40093_1.diff] tif_getimage.c #23
- int samplesperpixel = img->samplesperpixel; - (void) y; - fromskew *= samplesperpixel; - for( ; h > 0; --h) { - uint32 r, g, b, a; - uint8* m; - for (x = w; x > 0; --x) { - a = pp[3]; - m = img->UaToAa+((size_t) a<<8); - r = m[pp[0]]; - g = m[pp[1]]; - b = m[pp[2]]; - *cp++ = PACK4(r,g,b,a); - pp += samplesperpixel; - } - cp += toskew; - pp += fromskew; - } + int samplesperpixel = img->samplesperpixel; + (void)y; + fromskew *= samplesperpixel; + for (; h > 0; --h) + { + uint32_t r, g, b, a; + uint8_t *m; + for (x = w; x > 0; --x) + { + a = pp[3]; + m = img->UaToAa + ((size_t)a << 8); + r = m[pp[0]]; + g = m[pp[1]]; + b = m[pp[2]]; + *cp++ = PACK4(r, g, b, a); + pp += samplesperpixel; + } + cp += toskew; + pp += fromskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
pp += fromskew; } } /* * 8-bit packed samples => RGBA w/ unassociated alpha * (known to have Map == NULL) */ DECLAREContigPutFunc(putRGBUAcontig8bittile) {
+ show +
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
int samplesperpixel = img->samplesperpixel; (void) y; fromskew *= samplesperpixel; for( ; h > 0; --h) { uint32 r, g, b, a; uint8* m; for (x = w; x > 0; --x) { a = pp[3]; m = img->UaToAa+((size_t) a<<8); r = m[pp[0]]; g = m[pp[1]]; b = m[pp[2]]; *cp++ = PACK4(r,g,b,a); pp += samplesperpixel; } cp += toskew; pp += fromskew;
+ show +
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
} } /* * 16-bit packed samples => RGB */ DECLAREContigPutFunc(putRGBcontig16bittile) { int samplesperpixel = img->samplesperpixel; uint16 *wp = (uint16 *)pp;

[CVE-2023-40093_1.diff] tif_getimage.c #24
- int samplesperpixel = img->samplesperpixel; - uint16 *wp = (uint16 *)pp; - (void) y; - fromskew *= samplesperpixel; - for( ; h > 0; --h) { - for (x = w; x > 0; --x) { - *cp++ = PACK(img->Bitdepth16To8[wp[0]], - img->Bitdepth16To8[wp[1]], - img->Bitdepth16To8[wp[2]]); - wp += samplesperpixel; - } - cp += toskew; - wp += fromskew; - } + int samplesperpixel = img->samplesperpixel; + uint16_t *wp = (uint16_t *)pp; + (void)y; + fromskew *= samplesperpixel; + for (; h > 0; --h) + { + for (x = w; x > 0; --x) + { + *cp++ = PACK(img->Bitdepth16To8[wp[0]], img->Bitdepth16To8[wp[1]], + img->Bitdepth16To8[wp[2]]); + wp += samplesperpixel; + } + cp += toskew; + wp += fromskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
cp += toskew; pp += fromskew; } } /* * 16-bit packed samples => RGB */ DECLAREContigPutFunc(putRGBcontig16bittile) {
+ show +
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
int samplesperpixel = img->samplesperpixel; uint16 *wp = (uint16 *)pp; (void) y; fromskew *= samplesperpixel; for( ; h > 0; --h) { for (x = w; x > 0; --x) { *cp++ = PACK(img->Bitdepth16To8[wp[0]], img->Bitdepth16To8[wp[1]], img->Bitdepth16To8[wp[2]]); wp += samplesperpixel; } cp += toskew; wp += fromskew;
+ show +
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
} } /* * 16-bit packed samples => RGBA w/ associated alpha * (known to have Map == NULL) */ DECLAREContigPutFunc(putRGBAAcontig16bittile) { int samplesperpixel = img->samplesperpixel;

[CVE-2023-40093_1.diff] tif_getimage.c #25
- int samplesperpixel = img->samplesperpixel; - uint16 *wp = (uint16 *)pp; - (void) y; - fromskew *= samplesperpixel; - for( ; h > 0; --h) { - for (x = w; x > 0; --x) { - *cp++ = PACK4(img->Bitdepth16To8[wp[0]], - img->Bitdepth16To8[wp[1]], - img->Bitdepth16To8[wp[2]], - img->Bitdepth16To8[wp[3]]); - wp += samplesperpixel; - } - cp += toskew; - wp += fromskew; - } + int samplesperpixel = img->samplesperpixel; + uint16_t *wp = (uint16_t *)pp; + (void)y; + fromskew *= samplesperpixel; + for (; h > 0; --h) + { + for (x = w; x > 0; --x) + { + *cp++ = PACK4(img->Bitdepth16To8[wp[0]], img->Bitdepth16To8[wp[1]], + img->Bitdepth16To8[wp[2]], img->Bitdepth16To8[wp[3]]); + wp += samplesperpixel; + } + cp += toskew; + wp += fromskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
wp += fromskew; } } /* * 16-bit packed samples => RGBA w/ associated alpha * (known to have Map == NULL) */ DECLAREContigPutFunc(putRGBAAcontig16bittile) {
+ show +
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
int samplesperpixel = img->samplesperpixel; uint16 *wp = (uint16 *)pp; (void) y; fromskew *= samplesperpixel; for( ; h > 0; --h) { for (x = w; x > 0; --x) { *cp++ = PACK4(img->Bitdepth16To8[wp[0]], img->Bitdepth16To8[wp[1]], img->Bitdepth16To8[wp[2]], img->Bitdepth16To8[wp[3]]); wp += samplesperpixel; } cp += toskew; wp += fromskew;
+ show +
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
} } /* * 16-bit packed samples => RGBA w/ unassociated alpha * (known to have Map == NULL) */ DECLAREContigPutFunc(putRGBUAcontig16bittile) { int samplesperpixel = img->samplesperpixel;

[CVE-2023-40093_1.diff] tif_getimage.c #26
- int samplesperpixel = img->samplesperpixel; - uint16 *wp = (uint16 *)pp; - (void) y; - fromskew *= samplesperpixel; - for( ; h > 0; --h) { - uint32 r,g,b,a; - uint8* m; - for (x = w; x > 0; --x) { - a = img->Bitdepth16To8[wp[3]]; - m = img->UaToAa+((size_t) a<<8); - r = m[img->Bitdepth16To8[wp[0]]]; - g = m[img->Bitdepth16To8[wp[1]]]; - b = m[img->Bitdepth16To8[wp[2]]]; - *cp++ = PACK4(r,g,b,a); - wp += samplesperpixel; - } - cp += toskew; - wp += fromskew; - } + int samplesperpixel = img->samplesperpixel; + uint16_t *wp = (uint16_t *)pp; + (void)y; + fromskew *= samplesperpixel; + for (; h > 0; --h) + { + uint32_t r, g, b, a; + uint8_t *m; + for (x = w; x > 0; --x) + { + a = img->Bitdepth16To8[wp[3]]; + m = img->UaToAa + ((size_t)a << 8); + r = m[img->Bitdepth16To8[wp[0]]]; + g = m[img->Bitdepth16To8[wp[1]]]; + b = m[img->Bitdepth16To8[wp[2]]]; + *cp++ = PACK4(r, g, b, a); + wp += samplesperpixel; + } + cp += toskew; + wp += fromskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
wp += fromskew; } } /* * 16-bit packed samples => RGBA w/ unassociated alpha * (known to have Map == NULL) */ DECLAREContigPutFunc(putRGBUAcontig16bittile) {
+ show +
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
int samplesperpixel = img->samplesperpixel; uint16 *wp = (uint16 *)pp; (void) y; fromskew *= samplesperpixel; for( ; h > 0; --h) { uint32 r,g,b,a; uint8* m; for (x = w; x > 0; --x) { a = img->Bitdepth16To8[wp[3]]; m = img->UaToAa+((size_t) a<<8); r = m[img->Bitdepth16To8[wp[0]]]; g = m[img->Bitdepth16To8[wp[1]]]; b = m[img->Bitdepth16To8[wp[2]]]; *cp++ = PACK4(r,g,b,a); wp += samplesperpixel; } cp += toskew; wp += fromskew;
+ show +
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
} } /* * 8-bit packed CMYK samples w/o Map => RGB * * NB: The conversion of CMYK->RGB is *very* crude. */ DECLAREContigPutFunc(putRGBcontig8bitCMYKtile) {

[CVE-2023-40093_1.diff] tif_getimage.c #29
- (void) img; (void) x; (void) y; - for( ; h > 0; --h) { - UNROLL8(w, NOP, *cp++ = PACK4(*r++, *g++, *b++, *a++)); - SKEW4(r, g, b, a, fromskew); - cp += toskew; - } + (void)img; + (void)x; + (void)y; + for (; h > 0; --h) + { + UNROLL8(w, NOP, *cp++ = PACK4(*r++, *g++, *b++, *a++)); + SKEW4(r, g, b, a, fromskew); + cp += toskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
SKEW(r, g, b, fromskew); cp += toskew; } } /* * 8-bit unpacked samples => RGBA w/ associated alpha */ DECLARESepPutFunc(putRGBAAseparate8bittile) {
+ show +
1681
1682
1683
1684
1685
(void) img; (void) x; (void) y; for( ; h > 0; --h) { UNROLL8(w, NOP, *cp++ = PACK4(*r++, *g++, *b++, *a++)); SKEW4(r, g, b, a, fromskew); cp += toskew;
+ show +
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
} } /* * 8-bit unpacked CMYK samples => RGBA */ DECLARESepPutFunc(putCMYKseparate8bittile) { (void) img; (void) y; for( ; h > 0; --h) {

[CVE-2023-40093_1.diff] tif_getimage.c #30
- (void) img; (void) y; - for( ; h > 0; --h) { - uint32 rv, gv, bv, kv; - for (x = w; x > 0; --x) { - kv = 255 - *a++; - rv = (kv*(255-*r++))/255; - gv = (kv*(255-*g++))/255; - bv = (kv*(255-*b++))/255; - *cp++ = PACK4(rv,gv,bv,255); - } - SKEW4(r, g, b, a, fromskew); - cp += toskew; - } + (void)img; + (void)y; + for (; h > 0; --h) + { + uint32_t rv, gv, bv, kv; + for (x = w; x > 0; --x) + { + kv = 255 - *a++; + rv = (kv * (255 - *r++)) / 255; + gv = (kv * (255 - *g++)) / 255; + bv = (kv * (255 - *b++)) / 255; + *cp++ = PACK4(rv, gv, bv, 255); + } + SKEW4(r, g, b, a, fromskew); + cp += toskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
SKEW4(r, g, b, a, fromskew); cp += toskew; } } /* * 8-bit unpacked CMYK samples => RGBA */ DECLARESepPutFunc(putCMYKseparate8bittile) {
+ show +
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
(void) img; (void) y; for( ; h > 0; --h) { uint32 rv, gv, bv, kv; for (x = w; x > 0; --x) { kv = 255 - *a++; rv = (kv*(255-*r++))/255; gv = (kv*(255-*g++))/255; bv = (kv*(255-*b++))/255; *cp++ = PACK4(rv,gv,bv,255); } SKEW4(r, g, b, a, fromskew); cp += toskew;
+ show +
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
} } /* * 8-bit unpacked samples => RGBA w/ unassociated alpha */ DECLARESepPutFunc(putRGBUAseparate8bittile) { (void) img; (void) y; for( ; h > 0; --h) {

[CVE-2023-40093_1.diff] tif_getimage.c #31
- (void) img; (void) y; - for( ; h > 0; --h) { - uint32 rv, gv, bv, av; - uint8* m; - for (x = w; x > 0; --x) { - av = *a++; - m = img->UaToAa+((size_t) av<<8); - rv = m[*r++]; - gv = m[*g++]; - bv = m[*b++]; - *cp++ = PACK4(rv,gv,bv,av); - } - SKEW4(r, g, b, a, fromskew); - cp += toskew; - } + (void)img; + (void)y; + for (; h > 0; --h) + { + uint32_t rv, gv, bv, av; + uint8_t *m; + for (x = w; x > 0; --x) + { + av = *a++; + m = img->UaToAa + ((size_t)av << 8); + rv = m[*r++]; + gv = m[*g++]; + bv = m[*b++]; + *cp++ = PACK4(rv, gv, bv, av); + } + SKEW4(r, g, b, a, fromskew); + cp += toskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
SKEW4(r, g, b, a, fromskew); cp += toskew; } } /* * 8-bit unpacked samples => RGBA w/ unassociated alpha */ DECLARESepPutFunc(putRGBUAseparate8bittile) {
+ show +
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
(void) img; (void) y; for( ; h > 0; --h) { uint32 rv, gv, bv, av; uint8* m; for (x = w; x > 0; --x) { av = *a++; m = img->UaToAa+((size_t) av<<8); rv = m[*r++]; gv = m[*g++]; bv = m[*b++]; *cp++ = PACK4(rv,gv,bv,av); } SKEW4(r, g, b, a, fromskew); cp += toskew;
+ show +
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
} } /* * 16-bit unpacked samples => RGB */ DECLARESepPutFunc(putRGBseparate16bittile) { uint16 *wr = (uint16*) r; uint16 *wg = (uint16*) g;

[CVE-2023-40093_1.diff] tif_getimage.c #32
- uint16 *wr = (uint16*) r; - uint16 *wg = (uint16*) g; - uint16 *wb = (uint16*) b; - (void) img; (void) y; (void) a; - for( ; h > 0; --h) { - for (x = 0; x < w; x++) - *cp++ = PACK(img->Bitdepth16To8[*wr++], - img->Bitdepth16To8[*wg++], - img->Bitdepth16To8[*wb++]); - SKEW(wr, wg, wb, fromskew); - cp += toskew; - } + uint16_t *wr = (uint16_t *)r; + uint16_t *wg = (uint16_t *)g; + uint16_t *wb = (uint16_t *)b; + (void)img; + (void)y; + (void)a; + for (; h > 0; --h) + { + for (x = 0; x < w; x++) + *cp++ = PACK(img->Bitdepth16To8[*wr++], img->Bitdepth16To8[*wg++], + img->Bitdepth16To8[*wb++]); + SKEW(wr, wg, wb, fromskew); + cp += toskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
SKEW4(r, g, b, a, fromskew); cp += toskew; } } /* * 16-bit unpacked samples => RGB */ DECLARESepPutFunc(putRGBseparate16bittile) {
+ show +
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
uint16 *wr = (uint16*) r; uint16 *wg = (uint16*) g; uint16 *wb = (uint16*) b; (void) img; (void) y; (void) a; for( ; h > 0; --h) { for (x = 0; x < w; x++) *cp++ = PACK(img->Bitdepth16To8[*wr++], img->Bitdepth16To8[*wg++], img->Bitdepth16To8[*wb++]); SKEW(wr, wg, wb, fromskew); cp += toskew;
+ show +
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
} } /* * 16-bit unpacked samples => RGBA w/ associated alpha */ DECLARESepPutFunc(putRGBAAseparate16bittile) { uint16 *wr = (uint16*) r; uint16 *wg = (uint16*) g;

[CVE-2023-40093_1.diff] tif_getimage.c #33
- uint16 *wr = (uint16*) r; - uint16 *wg = (uint16*) g; - uint16 *wb = (uint16*) b; - uint16 *wa = (uint16*) a; - (void) img; (void) y; - for( ; h > 0; --h) { - for (x = 0; x < w; x++) - *cp++ = PACK4(img->Bitdepth16To8[*wr++], - img->Bitdepth16To8[*wg++], - img->Bitdepth16To8[*wb++], - img->Bitdepth16To8[*wa++]); - SKEW4(wr, wg, wb, wa, fromskew); - cp += toskew; - } + uint16_t *wr = (uint16_t *)r; + uint16_t *wg = (uint16_t *)g; + uint16_t *wb = (uint16_t *)b; + uint16_t *wa = (uint16_t *)a; + (void)img; + (void)y; + for (; h > 0; --h) + { + for (x = 0; x < w; x++) + *cp++ = PACK4(img->Bitdepth16To8[*wr++], img->Bitdepth16To8[*wg++], + img->Bitdepth16To8[*wb++], img->Bitdepth16To8[*wa++]); + SKEW4(wr, wg, wb, wa, fromskew); + cp += toskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
SKEW(wr, wg, wb, fromskew); cp += toskew; } } /* * 16-bit unpacked samples => RGBA w/ associated alpha */ DECLARESepPutFunc(putRGBAAseparate16bittile) {
+ show +
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
uint16 *wr = (uint16*) r; uint16 *wg = (uint16*) g; uint16 *wb = (uint16*) b; uint16 *wa = (uint16*) a; (void) img; (void) y; for( ; h > 0; --h) { for (x = 0; x < w; x++) *cp++ = PACK4(img->Bitdepth16To8[*wr++], img->Bitdepth16To8[*wg++], img->Bitdepth16To8[*wb++], img->Bitdepth16To8[*wa++]); SKEW4(wr, wg, wb, wa, fromskew); cp += toskew;
+ show +
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
} } /* * 16-bit unpacked samples => RGBA w/ unassociated alpha */ DECLARESepPutFunc(putRGBUAseparate16bittile) { uint16 *wr = (uint16*) r; uint16 *wg = (uint16*) g;

[CVE-2023-40093_1.diff] tif_getimage.c #36
- uint32* cp1 = cp+w+toskew; - int32 incr = 2*toskew+w; + uint32_t *cp1 = cp + w + toskew; + int32_t incr = 2 * toskew + w; - (void) y; - fromskew = (fromskew / 4) * (4*2+2); - if ((w & 3) == 0 && (h & 1) == 0) { - for (; h >= 2; h -= 2) { - x = w>>2; - do { - int32 Cb = pp[8]; - int32 Cr = pp[9]; - - YCbCrtoRGB(cp [0], pp[0]); - YCbCrtoRGB(cp [1], pp[1]); - YCbCrtoRGB(cp [2], pp[2]); - YCbCrtoRGB(cp [3], pp[3]); + (void)y; + fromskew = (fromskew / 4) * (4 * 2 + 2); + if ((w & 3) == 0 && (h & 1) == 0) + { + for (; h >= 2; h -= 2) + { + x = w >> 2; + do + { + int32_t Cb = pp[8]; + int32_t Cr = pp[9]; + + YCbCrtoRGB(cp[0], pp[0]); + YCbCrtoRGB(cp[1], pp[1]); + YCbCrtoRGB(cp[2], pp[2]); + YCbCrtoRGB(cp[3], pp[3]); - +
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
pp += fromskew; } } } /* * 8-bit packed YCbCr samples w/ 4,2 subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr42tile) {
+ show +
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
uint32* cp1 = cp+w+toskew; int32 incr = 2*toskew+w; (void) y; fromskew = (fromskew / 4) * (4*2+2); if ((w & 3) == 0 && (h & 1) == 0) { for (; h >= 2; h -= 2) { x = w>>2; do { int32 Cb = pp[8]; int32 Cr = pp[9]; YCbCrtoRGB(cp [0], pp[0]); YCbCrtoRGB(cp [1], pp[1]); YCbCrtoRGB(cp [2], pp[2]); YCbCrtoRGB(cp [3], pp[3]);
+ show +
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
YCbCrtoRGB(cp1[0], pp[4]); YCbCrtoRGB(cp1[1], pp[5]); YCbCrtoRGB(cp1[2], pp[6]); YCbCrtoRGB(cp1[3], pp[7]); cp += 4; cp1 += 4; pp += 10; } while (--x); cp += incr;

[CVE-2023-40093_1.diff] tif_getimage.c #39
- uint32* cp2; - int32 incr = 2*toskew+w; - (void) y; - fromskew = (fromskew / 2) * (2*2+2); - cp2 = cp+w+toskew; - while (h>=2) { - x = w; - while (x>=2) { - uint32 Cb = pp[4]; - uint32 Cr = pp[5]; - YCbCrtoRGB(cp[0], pp[0]); - YCbCrtoRGB(cp[1], pp[1]); - YCbCrtoRGB(cp2[0], pp[2]); - YCbCrtoRGB(cp2[1], pp[3]); - cp += 2; - cp2 += 2; - pp += 6; - x -= 2; - } - if (x==1) { - uint32 Cb = pp[4]; - uint32 Cr = pp[5]; - YCbCrtoRGB(cp[0], pp[0]); - YCbCrtoRGB(cp2[0], pp[2]); - cp ++ ; - cp2 ++ ; - pp += 6; - } - cp += incr; - cp2 += incr; - pp += fromskew; - h-=2; - } - if (h==1) { - x = w; - while (x>=2) { - uint32 Cb = pp[4]; - uint32 Cr = pp[5]; - YCbCrtoRGB(cp[0], pp[0]); - YCbCrtoRGB(cp[1], pp[1]); - cp += 2; - cp2 += 2; - pp += 6; - x -= 2; - } - if (x==1) { - uint32 Cb = pp[4]; - uint32 Cr = pp[5]; - YCbCrtoRGB(cp[0], pp[0]); - } - } + uint32_t *cp2; + int32_t incr = 2 * toskew + w; + (void)y; + fromskew = (fromskew / 2) * (2 * 2 + 2); + cp2 = cp + w + toskew; + while (h >= 2) + { + x = w; + while (x >= 2) + { + uint32_t Cb = pp[4]; + uint32_t Cr = pp[5]; + YCbCrtoRGB(cp[0], pp[0]); + YCbCrtoRGB(cp[1], pp[1]); + YCbCrtoRGB(cp2[0], pp[2]); + YCbCrtoRGB(cp2[1], pp[3]); + cp += 2; + cp2 += 2; + pp += 6; + x -= 2; + } + if (x == 1) + { + uint32_t Cb = pp[4]; + uint32_t Cr = pp[5]; + YCbCrtoRGB(cp[0], pp[0]); + YCbCrtoRGB(cp2[0], pp[2]); + cp++; + cp2++; + pp += 6; + } + cp += incr; + cp2 += incr; + pp += fromskew; + h -= 2; + } + if (h == 1) + { + x = w; + while (x >= 2) + { + uint32_t Cb = pp[4]; + uint32_t Cr = pp[5]; + YCbCrtoRGB(cp[0], pp[0]); + YCbCrtoRGB(cp[1], pp[1]); + cp += 2; + cp2 += 2; + pp += 6; + x -= 2; + } + if (x == 1) + { + uint32_t Cb = pp[4]; + uint32_t Cr = pp[5]; + YCbCrtoRGB(cp[0], pp[0]); + } + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
pp += fromskew; } while (--h); } /* * 8-bit packed YCbCr samples w/ 2,2 subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr22tile) {
+ show +
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
uint32* cp2; int32 incr = 2*toskew+w; (void) y; fromskew = (fromskew / 2) * (2*2+2); cp2 = cp+w+toskew; while (h>=2) { x = w; while (x>=2) { uint32 Cb = pp[4]; uint32 Cr = pp[5]; YCbCrtoRGB(cp[0], pp[0]); YCbCrtoRGB(cp[1], pp[1]); YCbCrtoRGB(cp2[0], pp[2]); YCbCrtoRGB(cp2[1], pp[3]); cp += 2; cp2 += 2; pp += 6; x -= 2; } if (x==1) { uint32 Cb = pp[4]; uint32 Cr = pp[5]; YCbCrtoRGB(cp[0], pp[0]); YCbCrtoRGB(cp2[0], pp[2]); cp ++ ; cp2 ++ ; pp += 6; } cp += incr; cp2 += incr; pp += fromskew; h-=2; } if (h==1) { x = w; while (x>=2) { uint32 Cb = pp[4]; uint32 Cr = pp[5]; YCbCrtoRGB(cp[0], pp[0]); YCbCrtoRGB(cp[1], pp[1]); cp += 2; cp2 += 2; pp += 6; x -= 2; } if (x==1) { uint32 Cb = pp[4]; uint32 Cr = pp[5]; YCbCrtoRGB(cp[0], pp[0]);
+ show +
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
} } } /* * 8-bit packed YCbCr samples w/ 2,1 subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr21tile) { (void) y;

[CVE-2023-40093_1.diff] tif_getimage.c #40
- (void) y; - fromskew = (fromskew / 2) * (2*1+2); - do { - x = w>>1; - while(x>0) { - int32 Cb = pp[2]; - int32 Cr = pp[3]; + (void)y; + fromskew = (fromskew / 2) * (2 * 1 + 2); + do + { + x = w >> 1; + while (x > 0) + { + int32_t Cb = pp[2]; + int32_t Cr = pp[3]; - YCbCrtoRGB(cp[0], pp[0]); - YCbCrtoRGB(cp[1], pp[1]); + YCbCrtoRGB(cp[0], pp[0]); + YCbCrtoRGB(cp[1], pp[1]); - cp += 2; - pp += 4; - x --; - } + cp += 2; + pp += 4; + x--; + } - if( (w&1) != 0 ) - { - int32 Cb = pp[2]; - int32 Cr = pp[3]; + if ((w & 1) != 0) + { + int32_t Cb = pp[2]; + int32_t Cr = pp[3]; - YCbCrtoRGB(cp[0], pp[0]); + YCbCrtoRGB(cp[0], pp[0]); - cp += 1; - pp += 4; - } + cp += 1; + pp += 4; + } - cp += toskew; - pp += fromskew; - } while (--h); + cp += toskew; + pp += fromskew; + } while (--h);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
YCbCrtoRGB(cp[0], pp[0]); } } } /* * 8-bit packed YCbCr samples w/ 2,1 subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr21tile) {
+ show +
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
(void) y; fromskew = (fromskew / 2) * (2*1+2); do { x = w>>1; while(x>0) { int32 Cb = pp[2]; int32 Cr = pp[3]; YCbCrtoRGB(cp[0], pp[0]); YCbCrtoRGB(cp[1], pp[1]); cp += 2; pp += 4; x --; } if( (w&1) != 0 ) { int32 Cb = pp[2]; int32 Cr = pp[3]; YCbCrtoRGB(cp[0], pp[0]); cp += 1; pp += 4; } cp += toskew; pp += fromskew; } while (--h);
+ show +
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
} /* * 8-bit packed YCbCr samples w/ 1,2 subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr12tile) { uint32* cp2; int32 incr = 2*toskew+w; (void) y;

[CVE-2023-40093_1.diff] tif_getimage.c #41
- uint32* cp2; - int32 incr = 2*toskew+w; - (void) y; - fromskew = (fromskew / 1) * (1 * 2 + 2); - cp2 = cp+w+toskew; - while (h>=2) { - x = w; - do { - uint32 Cb = pp[2]; - uint32 Cr = pp[3]; - YCbCrtoRGB(cp[0], pp[0]); - YCbCrtoRGB(cp2[0], pp[1]); - cp ++; - cp2 ++; - pp += 4; - } while (--x); - cp += incr; - cp2 += incr; - pp += fromskew; - h-=2; - } - if (h==1) { - x = w; - do { - uint32 Cb = pp[2]; - uint32 Cr = pp[3]; - YCbCrtoRGB(cp[0], pp[0]); - cp ++; - pp += 4; - } while (--x); - } + uint32_t *cp2; + int32_t incr = 2 * toskew + w; + (void)y; + fromskew = (fromskew / 1) * (1 * 2 + 2); + cp2 = cp + w + toskew; + while (h >= 2) + { + x = w; + do + { + uint32_t Cb = pp[2]; + uint32_t Cr = pp[3]; + YCbCrtoRGB(cp[0], pp[0]); + YCbCrtoRGB(cp2[0], pp[1]); + cp++; + cp2++; + pp += 4; + } while (--x); + cp += incr; + cp2 += incr; + pp += fromskew; + h -= 2; + } + if (h == 1) + { + x = w; + do + { + uint32_t Cb = pp[2]; + uint32_t Cr = pp[3]; + YCbCrtoRGB(cp[0], pp[0]); + cp++; + pp += 4; + } while (--x); + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
cp += toskew; pp += fromskew; } while (--h); } /* * 8-bit packed YCbCr samples w/ 1,2 subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr12tile) {
+ show +
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
uint32* cp2; int32 incr = 2*toskew+w; (void) y; fromskew = (fromskew / 1) * (1 * 2 + 2); cp2 = cp+w+toskew; while (h>=2) { x = w; do { uint32 Cb = pp[2]; uint32 Cr = pp[3]; YCbCrtoRGB(cp[0], pp[0]); YCbCrtoRGB(cp2[0], pp[1]); cp ++; cp2 ++; pp += 4; } while (--x); cp += incr; cp2 += incr; pp += fromskew; h-=2; } if (h==1) { x = w; do { uint32 Cb = pp[2]; uint32 Cr = pp[3]; YCbCrtoRGB(cp[0], pp[0]); cp ++; pp += 4; } while (--x);
+ show +
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
} } /* * 8-bit packed YCbCr samples w/ no subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr11tile) { (void) y; fromskew = (fromskew / 1) * (1 * 1 + 2);

[CVE-2023-40093_1.diff] tif_getimage.c #42
- (void) y; - fromskew = (fromskew / 1) * (1 * 1 + 2); - do { - x = w; /* was x = w>>1; patched 2000/09/25 warmerda@home.com */ - do { - int32 Cb = pp[1]; - int32 Cr = pp[2]; + (void)y; + fromskew = (fromskew / 1) * (1 * 1 + 2); + do + { + x = w; /* was x = w>>1; patched 2000/09/25 warmerda@home.com */ + do + { + int32_t Cb = pp[1]; + int32_t Cr = pp[2]; - YCbCrtoRGB(*cp++, pp[0]); + YCbCrtoRGB(*cp++, pp[0]); - pp += 3; - } while (--x); - cp += toskew; - pp += fromskew; - } while (--h); + pp += 3; + } while (--x); + cp += toskew; + pp += fromskew; + } while (--h);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
pp += 4; } while (--x); } } /* * 8-bit packed YCbCr samples w/ no subsampling => RGB */ DECLAREContigPutFunc(putcontig8bitYCbCr11tile) {
+ show +
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
(void) y; fromskew = (fromskew / 1) * (1 * 1 + 2); do { x = w; /* was x = w>>1; patched 2000/09/25 warmerda@home.com */ do { int32 Cb = pp[1]; int32 Cr = pp[2]; YCbCrtoRGB(*cp++, pp[0]); pp += 3; } while (--x); cp += toskew; pp += fromskew; } while (--h);
+ show +
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
} /* * 8-bit packed YCbCr samples w/ no subsampling => RGB */ DECLARESepPutFunc(putseparate8bitYCbCr11tile) { (void) y; (void) a; /* TODO: naming of input vars is still off, change obfuscating declaration inside define, or resolve obfuscation */

[CVE-2023-40093_1.diff] tif_getimage.c #43
- (void) y; - (void) a; - /* TODO: naming of input vars is still off, change obfuscating declaration inside define, or resolve obfuscation */ - for( ; h > 0; --h) { - x = w; - do { - uint32 dr, dg, db; - TIFFYCbCrtoRGB(img->ycbcr,*r++,*g++,*b++,&dr,&dg,&db); - *cp++ = PACK(dr,dg,db); - } while (--x); - SKEW(r, g, b, fromskew); - cp += toskew; - } + (void)y; + (void)a; + /* TODO: naming of input vars is still off, change obfuscating declaration + * inside define, or resolve obfuscation */ + for (; h > 0; --h) + { + x = w; + do + { + uint32_t dr, dg, db; + TIFFYCbCrtoRGB(img->ycbcr, *r++, *g++, *b++, &dr, &dg, &db); + *cp++ = PACK(dr, dg, db); + } while (--x); + SKEW(r, g, b, fromskew); + cp += toskew; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
cp += toskew; pp += fromskew; } while (--h); } /* * 8-bit packed YCbCr samples w/ no subsampling => RGB */ DECLARESepPutFunc(putseparate8bitYCbCr11tile) {
+ show +
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
(void) y; (void) a; /* TODO: naming of input vars is still off, change obfuscating declaration inside define, or resolve obfuscation */ for( ; h > 0; --h) { x = w; do { uint32 dr, dg, db; TIFFYCbCrtoRGB(img->ycbcr,*r++,*g++,*b++,&dr,&dg,&db); *cp++ = PACK(dr,dg,db); } while (--x); SKEW(r, g, b, fromskew); cp += toskew;
+ show +
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
} } #undef YCbCrtoRGB static int isInRefBlackWhiteRange(float f) { return f > (float)(-0x7FFFFFFF + 128) && f < (float)0x7FFFFFFF; } static int

[CVE-2023-40093_1.diff] tif_getimage.c #48
-static int -PickContigCase(TIFFRGBAImage* img) +static int PickContigCase(TIFFRGBAImage *img) - img->get = TIFFIsTiled(img->tif) ? gtTileContig : gtStripContig; - img->put.contig = NULL; - switch (img->photometric) { - case PHOTOMETRIC_RGB: - switch (img->bitspersample) { - case 8: - if (img->alpha == EXTRASAMPLE_ASSOCALPHA && - img->samplesperpixel >= 4) - img->put.contig = putRGBAAcontig8bittile; - else if (img->alpha == EXTRASAMPLE_UNASSALPHA && - img->samplesperpixel >= 4) - { - if (BuildMapUaToAa(img)) - img->put.contig = putRGBUAcontig8bittile; - } - else if( img->samplesperpixel >= 3 ) - img->put.contig = putRGBcontig8bittile; - break; - case 16: - if (img->alpha == EXTRASAMPLE_ASSOCALPHA && - img->samplesperpixel >=4 ) - { - if (BuildMapBitdepth16To8(img)) - img->put.contig = putRGBAAcontig16bittile; - } - else if (img->alpha == EXTRASAMPLE_UNASSALPHA && - img->samplesperpixel >=4 ) - { - if (BuildMapBitdepth16To8(img) && - BuildMapUaToAa(img)) - img->put.contig = putRGBUAcontig16bittile; - } - else if( img->samplesperpixel >=3 ) - { - if (BuildMapBitdepth16To8(img)) - img->put.contig = putRGBcontig16bittile; - } - break; - } - break; - case PHOTOMETRIC_SEPARATED: - if (img->samplesperpixel >=4 && buildMap(img)) { - if (img->bitspersample == 8) { - if (!img->Map) - img->put.contig = putRGBcontig8bitCMYKtile; - else - img->put.contig = putRGBcontig8bitCMYKMaptile; - } - } - break; - case PHOTOMETRIC_PALETTE: - if (buildMap(img)) { - switch (img->bitspersample) { - case 8: - img->put.contig = put8bitcmaptile; - break; - case 4: - img->put.contig = put4bitcmaptile; - break; - case 2: - img->put.contig = put2bitcmaptile; - break; - case 1: - img->put.contig = put1bitcmaptile; - break; - } - } - break; - case PHOTOMETRIC_MINISWHITE: - case PHOTOMETRIC_MINISBLACK: - if (buildMap(img)) { - switch (img->bitspersample) { - case 16: - img->put.contig = put16bitbwtile; - break; - case 8: - if (img->alpha && img->samplesperpixel == 2) - img->put.contig = putagreytile; - else - img->put.contig = putgreytile; - break; - case 4: - img->put.contig = put4bitbwtile; - break; - case 2: - img->put.contig = put2bitbwtile; - break; - case 1: - img->put.contig = put1bitbwtile; - break; - } - } - break; - case PHOTOMETRIC_YCBCR: - if ((img->bitspersample==8) && (img->samplesperpixel==3)) - { - if (initYCbCrConversion(img)!=0) - { - /* - * The 6.0 spec says that subsampling must be - * one of 1, 2, or 4, and that vertical subsampling - * must always be <= horizontal subsampling; so - * there are only a few possibilities and we just - * enumerate the cases. - * Joris: added support for the [1,2] case, nonetheless, to accommodate - * some OJPEG files - */ - uint16 SubsamplingHor; - uint16 SubsamplingVer; - TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &SubsamplingHor, &SubsamplingVer); - switch ((SubsamplingHor<<4)|SubsamplingVer) { - case 0x44: - img->put.contig = putcontig8bitYCbCr44tile; - break; - case 0x42: - img->put.contig = putcontig8bitYCbCr42tile; - break; - case 0x41: - img->put.contig = putcontig8bitYCbCr41tile; - break; - case 0x22: - img->put.contig = putcontig8bitYCbCr22tile; - break; - case 0x21: - img->put.contig = putcontig8bitYCbCr21tile; - break; - case 0x12: - img->put.contig = putcontig8bitYCbCr12tile; - break; - case 0x11: - img->put.contig = putcontig8bitYCbCr11tile; - break; - } - } - } - break; - case PHOTOMETRIC_CIELAB: - if (img->samplesperpixel == 3 && buildMap(img)) { - if (img->bitspersample == 8) - img->put.contig = initCIELabConversion(img); - break; - } - } - return ((img->get!=NULL) && (img->put.contig!=NULL)); + img->get = TIFFIsTiled(img->tif) ? gtTileContig : gtStripContig; + img->put.contig = NULL; + switch (img->photometric) + { + case PHOTOMETRIC_RGB: + switch (img->bitspersample) + { + case 8: + if (img->alpha == EXTRASAMPLE_ASSOCALPHA && + img->samplesperpixel >= 4) + img->put.contig = putRGBAAcontig8bittile; + else if (img->alpha == EXTRASAMPLE_UNASSALPHA && + img->samplesperpixel >= 4) + { + if (BuildMapUaToAa(img)) + img->put.contig = putRGBUAcontig8bittile; + } + else if (img->samplesperpixel >= 3) + img->put.contig = putRGBcontig8bittile; + break; + case 16: + if (img->alpha == EXTRASAMPLE_ASSOCALPHA && + img->samplesperpixel >= 4) + { + if (BuildMapBitdepth16To8(img)) + img->put.contig = putRGBAAcontig16bittile; + } + else if (img->alpha == EXTRASAMPLE_UNASSALPHA && + img->samplesperpixel >= 4) + { + if (BuildMapBitdepth16To8(img) && BuildMapUaToAa(img)) + img->put.contig = putRGBUAcontig16bittile; + } + else if (img->samplesperpixel >= 3) + { + if (BuildMapBitdepth16To8(img)) + img->put.contig = putRGBcontig16bittile; + } + break; + } + break; + case PHOTOMETRIC_SEPARATED: + if (img->samplesperpixel >= 4 && buildMap(img)) + { + if (img->bitspersample == 8) + { + if (!img->Map) + img->put.contig = putRGBcontig8bitCMYKtile; + else + img->put.contig = putRGBcontig8bitCMYKMaptile; + } + } + break; + case PHOTOMETRIC_PALETTE: + if (buildMap(img)) + { + switch (img->bitspersample) + { + case 8: + img->put.contig = put8bitcmaptile; + break; + case 4: + img->put.contig = put4bitcmaptile; + break; + case 2: + img->put.contig = put2bitcmaptile; + break; + case 1: + img->put.contig = put1bitcmaptile; + break; + } + } + break; + case PHOTOMETRIC_MINISWHITE: + case PHOTOMETRIC_MINISBLACK: + if (buildMap(img)) + { + switch (img->bitspersample) + { + case 16: + img->put.contig = put16bitbwtile; + break; + case 8: + if (img->alpha && img->samplesperpixel == 2) + img->put.contig = putagreytile; + else + img->put.contig = putgreytile; + break; + case 4: + img->put.contig = put4bitbwtile; + break; + case 2: + img->put.contig = put2bitbwtile; + break; + case 1: + img->put.contig = put1bitbwtile; + break; + } + } + break; + case PHOTOMETRIC_YCBCR: + if ((img->bitspersample == 8) && (img->samplesperpixel == 3)) + { + if (initYCbCrConversion(img) != 0) + { + /* + * The 6.0 spec says that subsampling must be + * one of 1, 2, or 4, and that vertical subsampling + * must always be <= horizontal subsampling; so + * there are only a few possibilities and we just + * enumerate the cases. + * Joris: added support for the [1,2] case, nonetheless, to + * accommodate some OJPEG files + */ + uint16_t SubsamplingHor; + uint16_t SubsamplingVer; + TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, + &SubsamplingHor, &SubsamplingVer); + switch ((SubsamplingHor << 4) | SubsamplingVer) + { + case 0x44: + img->put.contig = putcontig8bitYCbCr44tile; + break; + case 0x42: + img->put.contig = putcontig8bitYCbCr42tile; + break; + case 0x41: + img->put.contig = putcontig8bitYCbCr41tile; + break; + case 0x22: + img->put.contig = putcontig8bitYCbCr22tile; + break; + case 0x21: + img->put.contig = putcontig8bitYCbCr21tile; + break; + case 0x12: + img->put.contig = putcontig8bitYCbCr12tile; + break; + case 0x11: + img->put.contig = putcontig8bitYCbCr11tile; + break; + } + } + } + break; + case PHOTOMETRIC_CIELAB: + if (img->samplesperpixel == 3 && buildMap(img)) + { + if (img->bitspersample == 8 || img->bitspersample == 16) + img->put.contig = initCIELabConversion(img); + break; + } + } + return ((img->get != NULL) && (img->put.contig != NULL));
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
if (img->bitspersample <= 8 && !makecmap(img)) return (0); break; } return (1); } /* * Select the appropriate conversion routine for packed data. */
+ show +
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
static int PickContigCase(TIFFRGBAImage* img) { img->get = TIFFIsTiled(img->tif) ? gtTileContig : gtStripContig; img->put.contig = NULL; switch (img->photometric) { case PHOTOMETRIC_RGB: switch (img->bitspersample) { case 8: if (img->alpha == EXTRASAMPLE_ASSOCALPHA && img->samplesperpixel >= 4) img->put.contig = putRGBAAcontig8bittile; else if (img->alpha == EXTRASAMPLE_UNASSALPHA && img->samplesperpixel >= 4) { if (BuildMapUaToAa(img)) img->put.contig = putRGBUAcontig8bittile; } else if( img->samplesperpixel >= 3 ) img->put.contig = putRGBcontig8bittile; break; case 16: if (img->alpha == EXTRASAMPLE_ASSOCALPHA && img->samplesperpixel >=4 ) { if (BuildMapBitdepth16To8(img)) img->put.contig = putRGBAAcontig16bittile; } else if (img->alpha == EXTRASAMPLE_UNASSALPHA && img->samplesperpixel >=4 ) { if (BuildMapBitdepth16To8(img) && BuildMapUaToAa(img)) img->put.contig = putRGBUAcontig16bittile; } else if( img->samplesperpixel >=3 ) { if (BuildMapBitdepth16To8(img)) img->put.contig = putRGBcontig16bittile; } break; } break; case PHOTOMETRIC_SEPARATED: if (img->samplesperpixel >=4 && buildMap(img)) { if (img->bitspersample == 8) { if (!img->Map) img->put.contig = putRGBcontig8bitCMYKtile; else img->put.contig = putRGBcontig8bitCMYKMaptile; } } break; case PHOTOMETRIC_PALETTE: if (buildMap(img)) { switch (img->bitspersample) { case 8: img->put.contig = put8bitcmaptile; break; case 4: img->put.contig = put4bitcmaptile; break; case 2: img->put.contig = put2bitcmaptile; break; case 1: img->put.contig = put1bitcmaptile; break; } } break; case PHOTOMETRIC_MINISWHITE: case PHOTOMETRIC_MINISBLACK: if (buildMap(img)) { switch (img->bitspersample) { case 16: img->put.contig = put16bitbwtile; break; case 8: if (img->alpha && img->samplesperpixel == 2) img->put.contig = putagreytile; else img->put.contig = putgreytile; break; case 4: img->put.contig = put4bitbwtile; break; case 2: img->put.contig = put2bitbwtile; break; case 1: img->put.contig = put1bitbwtile; break; } } break; case PHOTOMETRIC_YCBCR: if ((img->bitspersample==8) && (img->samplesperpixel==3)) { if (initYCbCrConversion(img)!=0) { /* * The 6.0 spec says that subsampling must be * one of 1, 2, or 4, and that vertical subsampling * must always be <= horizontal subsampling; so * there are only a few possibilities and we just * enumerate the cases. * Joris: added support for the [1,2] case, nonetheless, to accommodate * some OJPEG files */ uint16 SubsamplingHor; uint16 SubsamplingVer; TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &SubsamplingHor, &SubsamplingVer); switch ((SubsamplingHor<<4)|SubsamplingVer) { case 0x44: img->put.contig = putcontig8bitYCbCr44tile; break; case 0x42: img->put.contig = putcontig8bitYCbCr42tile; break; case 0x41: img->put.contig = putcontig8bitYCbCr41tile; break; case 0x22: img->put.contig = putcontig8bitYCbCr22tile; break; case 0x21: img->put.contig = putcontig8bitYCbCr21tile; break; case 0x12: img->put.contig = putcontig8bitYCbCr12tile; break; case 0x11: img->put.contig = putcontig8bitYCbCr11tile; break; } } } break; case PHOTOMETRIC_CIELAB: if (img->samplesperpixel == 3 && buildMap(img)) { if (img->bitspersample == 8) img->put.contig = initCIELabConversion(img); break; } } return ((img->get!=NULL) && (img->put.contig!=NULL));
+ show +
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
} /* * Select the appropriate conversion routine for unpacked data. * * NB: we assume that unpacked single channel data is directed * to the "packed routines. */ static int PickSeparateCase(TIFFRGBAImage* img)

[CVE-2023-40093_1.diff] tif_getimage.c #49
-static int -PickSeparateCase(TIFFRGBAImage* img) +static int PickSeparateCase(TIFFRGBAImage *img) - img->get = TIFFIsTiled(img->tif) ? gtTileSeparate : gtStripSeparate; - img->put.separate = NULL; - switch (img->photometric) { - case PHOTOMETRIC_MINISWHITE: - case PHOTOMETRIC_MINISBLACK: - /* greyscale images processed pretty much as RGB by gtTileSeparate */ - case PHOTOMETRIC_RGB: - switch (img->bitspersample) { - case 8: - if (img->alpha == EXTRASAMPLE_ASSOCALPHA) - img->put.separate = putRGBAAseparate8bittile; - else if (img->alpha == EXTRASAMPLE_UNASSALPHA) - { - if (BuildMapUaToAa(img)) - img->put.separate = putRGBUAseparate8bittile; - } - else - img->put.separate = putRGBseparate8bittile; - break; - case 16: - if (img->alpha == EXTRASAMPLE_ASSOCALPHA) - { - if (BuildMapBitdepth16To8(img)) - img->put.separate = putRGBAAseparate16bittile; - } - else if (img->alpha == EXTRASAMPLE_UNASSALPHA) - { - if (BuildMapBitdepth16To8(img) && - BuildMapUaToAa(img)) - img->put.separate = putRGBUAseparate16bittile; - } - else - { - if (BuildMapBitdepth16To8(img)) - img->put.separate = putRGBseparate16bittile; - } - break; - } - break; - case PHOTOMETRIC_SEPARATED: - if (img->bitspersample == 8 && img->samplesperpixel == 4) - { - img->alpha = 1; // Not alpha, but seems like the only way to get 4th band - img->put.separate = putCMYKseparate8bittile; - } - break; - case PHOTOMETRIC_YCBCR: - if ((img->bitspersample==8) && (img->samplesperpixel==3)) - { - if (initYCbCrConversion(img)!=0) - { - uint16 hs, vs; - TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs); - switch ((hs<<4)|vs) { - case 0x11: - img->put.separate = putseparate8bitYCbCr11tile; - break; - /* TODO: add other cases here */ - } - } - } - break; - } - return ((img->get!=NULL) && (img->put.separate!=NULL)); + img->get = TIFFIsTiled(img->tif) ? gtTileSeparate : gtStripSeparate; + img->put.separate = NULL; + switch (img->photometric) + { + case PHOTOMETRIC_MINISWHITE: + case PHOTOMETRIC_MINISBLACK: + /* greyscale images processed pretty much as RGB by gtTileSeparate + */ + case PHOTOMETRIC_RGB: + switch (img->bitspersample) + { + case 8: + if (img->alpha == EXTRASAMPLE_ASSOCALPHA) + img->put.separate = putRGBAAseparate8bittile; + else if (img->alpha == EXTRASAMPLE_UNASSALPHA) + { + if (BuildMapUaToAa(img)) + img->put.separate = putRGBUAseparate8bittile; + } + else + img->put.separate = putRGBseparate8bittile; + break; + case 16: + if (img->alpha == EXTRASAMPLE_ASSOCALPHA) + { + if (BuildMapBitdepth16To8(img)) + img->put.separate = putRGBAAseparate16bittile; + } + else if (img->alpha == EXTRASAMPLE_UNASSALPHA) + { + if (BuildMapBitdepth16To8(img) && BuildMapUaToAa(img)) + img->put.separate = putRGBUAseparate16bittile; + } + else + { + if (BuildMapBitdepth16To8(img)) + img->put.separate = putRGBseparate16bittile; + } + break; + } + break; + case PHOTOMETRIC_SEPARATED: + if (img->bitspersample == 8 && img->samplesperpixel == 4) + { + img->alpha = + 1; // Not alpha, but seems like the only way to get 4th band + img->put.separate = putCMYKseparate8bittile; + } + break; + case PHOTOMETRIC_YCBCR: + if ((img->bitspersample == 8) && (img->samplesperpixel == 3)) + { + if (initYCbCrConversion(img) != 0) + { + uint16_t hs, vs; + TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, + &hs, &vs); + switch ((hs << 4) | vs) + { + case 0x11: + img->put.separate = putseparate8bitYCbCr11tile; + break; + /* TODO: add other cases here */ + } + } + } + break; + } + return ((img->get != NULL) && (img->put.separate != NULL)); -static int -BuildMapUaToAa(TIFFRGBAImage* img) +static int BuildMapUaToAa(TIFFRGBAImage *img) - static const char module[]="BuildMapUaToAa"; - uint8* m; - uint16 na,nv; - assert(img->UaToAa==NULL); - img->UaToAa=_TIFFmalloc(65536); - if (img->UaToAa==NULL) - { - TIFFErrorExt(img->tif->tif_clientdata,module,"Out of memory"); - return(0); - } - m=img->UaToAa; - for (na=0; na<256; na++) - { - for (nv=0; nv<256; nv++) - *m++=(uint8)((nv*na+127)/255); - } - return(1); + static const char module[] = "BuildMapUaToAa"; + uint8_t *m; + uint16_t na, nv; + assert(img->UaToAa == NULL); + img->UaToAa = _TIFFmallocExt(img->tif, 65536); + if (img->UaToAa == NULL) + { + TIFFErrorExtR(img->tif, module, "Out of memory"); + return (0); + } + m = img->UaToAa; + for (na = 0; na < 256; na++) + { + for (nv = 0; nv < 256; nv++) + *m++ = (uint8_t)((nv * na + 127) / 255); + } + return (1); -static int -BuildMapBitdepth16To8(TIFFRGBAImage* img) +static int BuildMapBitdepth16To8(TIFFRGBAImage *img) - static const char module[]="BuildMapBitdepth16To8"; - uint8* m; - uint32 n; - assert(img->Bitdepth16To8==NULL); - img->Bitdepth16To8=_TIFFmalloc(65536); - if (img->Bitdepth16To8==NULL) - { - TIFFErrorExt(img->tif->tif_clientdata,module,"Out of memory"); - return(0); - } - m=img->Bitdepth16To8; - for (n=0; n<65536; n++) - *m++=(uint8)((n+128)/257); - return(1); + static const char module[] = "BuildMapBitdepth16To8"; + uint8_t *m; + uint32_t n; + assert(img->Bitdepth16To8 == NULL); + img->Bitdepth16To8 = _TIFFmallocExt(img->tif, 65536); + if (img->Bitdepth16To8 == NULL) + { + TIFFErrorExtR(img->tif, module, "Out of memory"); + return (0); + } + m = img->Bitdepth16To8; + for (n = 0; n < 65536; n++) + *m++ = (uint8_t)((n + 128) / 257); + return (1); -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_getimage.c
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
} return ((img->get!=NULL) && (img->put.contig!=NULL)); } /* * Select the appropriate conversion routine for unpacked data. * * NB: we assume that unpacked single channel data is directed * to the "packed routines. */
+ show +
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
static int PickSeparateCase(TIFFRGBAImage* img) { img->get = TIFFIsTiled(img->tif) ? gtTileSeparate : gtStripSeparate; img->put.separate = NULL; switch (img->photometric) { case PHOTOMETRIC_MINISWHITE: case PHOTOMETRIC_MINISBLACK: /* greyscale images processed pretty much as RGB by gtTileSeparate */ case PHOTOMETRIC_RGB: switch (img->bitspersample) { case 8: if (img->alpha == EXTRASAMPLE_ASSOCALPHA) img->put.separate = putRGBAAseparate8bittile; else if (img->alpha == EXTRASAMPLE_UNASSALPHA) { if (BuildMapUaToAa(img)) img->put.separate = putRGBUAseparate8bittile; } else img->put.separate = putRGBseparate8bittile; break; case 16: if (img->alpha == EXTRASAMPLE_ASSOCALPHA) { if (BuildMapBitdepth16To8(img)) img->put.separate = putRGBAAseparate16bittile; } else if (img->alpha == EXTRASAMPLE_UNASSALPHA) { if (BuildMapBitdepth16To8(img) && BuildMapUaToAa(img)) img->put.separate = putRGBUAseparate16bittile; } else { if (BuildMapBitdepth16To8(img)) img->put.separate = putRGBseparate16bittile; } break; } break; case PHOTOMETRIC_SEPARATED: if (img->bitspersample == 8 && img->samplesperpixel == 4) { img->alpha = 1; // Not alpha, but seems like the only way to get 4th band img->put.separate = putCMYKseparate8bittile; } break; case PHOTOMETRIC_YCBCR: if ((img->bitspersample==8) && (img->samplesperpixel==3)) { if (initYCbCrConversion(img)!=0) { uint16 hs, vs; TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs); switch ((hs<<4)|vs) { case 0x11: img->put.separate = putseparate8bitYCbCr11tile; break; /* TODO: add other cases here */ } } } break; } return ((img->get!=NULL) && (img->put.separate!=NULL)); } static int BuildMapUaToAa(TIFFRGBAImage* img) { static const char module[]="BuildMapUaToAa"; uint8* m; uint16 na,nv; assert(img->UaToAa==NULL); img->UaToAa=_TIFFmalloc(65536); if (img->UaToAa==NULL) { TIFFErrorExt(img->tif->tif_clientdata,module,"Out of memory"); return(0); } m=img->UaToAa; for (na=0; na<256; na++) { for (nv=0; nv<256; nv++) *m++=(uint8)((nv*na+127)/255); } return(1); } static int BuildMapBitdepth16To8(TIFFRGBAImage* img) { static const char module[]="BuildMapBitdepth16To8"; uint8* m; uint32 n; assert(img->Bitdepth16To8==NULL); img->Bitdepth16To8=_TIFFmalloc(65536); if (img->Bitdepth16To8==NULL) { TIFFErrorExt(img->tif->tif_clientdata,module,"Out of memory"); return(0); } m=img->Bitdepth16To8; for (n=0; n<65536; n++) *m++=(uint8)((n+128)/257); return(1);
+ show +
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
} /* * Read a whole strip off data from the file, and convert to RGBA form. * If this is the last strip, then it will only contain the portion of * the strip that is actually within the image space. The result is * organized in bottom to top form. */

[CVE-2023-40093_1.diff] tif_dir.c #3
-static int -OkToChangeTag(TIFF* tif, uint32 tag) +static int OkToChangeTag(TIFF *tif, uint32_t tag) - const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY); - if (!fip) { /* unknown tag */ - TIFFErrorExt(tif->tif_clientdata, "TIFFSetField", "%s: Unknown %stag %u", - tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "", tag); - return (0); - } - if (tag != TIFFTAG_IMAGELENGTH && (tif->tif_flags & TIFF_BEENWRITING) && - !fip->field_oktochange) { - /* - * Consult info table to see if tag can be changed - * after we've started writing. We only allow changes - * to those tags that don't/shouldn't affect the - * compression and/or format of the data. - */ - TIFFErrorExt(tif->tif_clientdata, "TIFFSetField", - "%s: Cannot modify tag \"%s\" while writing", - tif->tif_name, fip->field_name); - return (0); - } - return (1); + const TIFFField *fip = TIFFFindField(tif, tag, TIFF_ANY); + if (!fip) + { /* unknown tag */ + TIFFErrorExtR(tif, "TIFFSetField", "%s: Unknown %stag %" PRIu32, + tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "", tag); + return (0); + } + if (tag != TIFFTAG_IMAGELENGTH && (tif->tif_flags & TIFF_BEENWRITING) && + !fip->field_oktochange) + { + /* + * Consult info table to see if tag can be changed + * after we've started writing. We only allow changes + * to those tags that don't/shouldn't affect the + * compression and/or format of the data. + */ + TIFFErrorExtR(tif, "TIFFSetField", + "%s: Cannot modify tag \"%s\" while writing", + tif->tif_name, fip->field_name); + return (0); + } + return (1);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_dir.c
763
764
765
766
767
768
769
770
771
772
/* * Return 1/0 according to whether or not * it is permissible to set the tag's value. * Note that we allow ImageLength to be changed * so that we can append and extend to images. * Any other tag may not be altered once writing * has commenced, unless its value has no effect * on the format of the data that is written. */
+ show +
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
static int OkToChangeTag(TIFF* tif, uint32 tag) { const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY); if (!fip) { /* unknown tag */ TIFFErrorExt(tif->tif_clientdata, "TIFFSetField", "%s: Unknown %stag %u", tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "", tag); return (0); } if (tag != TIFFTAG_IMAGELENGTH && (tif->tif_flags & TIFF_BEENWRITING) && !fip->field_oktochange) { /* * Consult info table to see if tag can be changed * after we've started writing. We only allow changes * to those tags that don't/shouldn't affect the * compression and/or format of the data. */ TIFFErrorExt(tif->tif_clientdata, "TIFFSetField", "%s: Cannot modify tag \"%s\" while writing", tif->tif_name, fip->field_name); return (0); } return (1);
+ show +
796
797
798
799
800
801
802
803
804
805
} /* * Record the value of a field in the * internal directory structure. The * field will be written to the file * when/if the directory structure is * updated. */ int

[CVE-2023-40093_1.diff] tif_flush.c #4
- if( _TIFFRewriteField( tif, - isTiled ? TIFFTAG_TILEOFFSETS : - TIFFTAG_STRIPOFFSETS, - TIFF_LONG8, - tif->tif_dir.td_nstrips, - tif->tif_dir.td_stripoffset_p ) - && _TIFFRewriteField( tif, - isTiled ? TIFFTAG_TILEBYTECOUNTS : - TIFFTAG_STRIPBYTECOUNTS, - TIFF_LONG8, - tif->tif_dir.td_nstrips, - tif->tif_dir.td_stripbytecount_p ) ) + if (_TIFFRewriteField(tif, + isTiled ? TIFFTAG_TILEOFFSETS : TIFFTAG_STRIPOFFSETS, + TIFF_LONG8, tif->tif_dir.td_nstrips, + tif->tif_dir.td_stripoffset_p) && + _TIFFRewriteField( + tif, isTiled ? TIFFTAG_TILEBYTECOUNTS : TIFFTAG_STRIPBYTECOUNTS, + TIFF_LONG8, tif->tif_dir.td_nstrips, + tif->tif_dir.td_stripbytecount_p))
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_flush.c
114
115
116
117
118
119
120
121
122
123
TIFFErrorExt(tif->tif_clientdata, module, "Function not called together with " "TIFFDeferStrileArrayWriting()"); return 0; } if (tif->tif_dir.td_stripoffset_p == NULL && !TIFFSetupStrips(tif)) return 0; }
+ show +
124
125
126
127
128
129
130
131
132
133
134
135
if( _TIFFRewriteField( tif, isTiled ? TIFFTAG_TILEOFFSETS : TIFFTAG_STRIPOFFSETS, TIFF_LONG8, tif->tif_dir.td_nstrips, tif->tif_dir.td_stripoffset_p ) && _TIFFRewriteField( tif, isTiled ? TIFFTAG_TILEBYTECOUNTS : TIFFTAG_STRIPBYTECOUNTS, TIFF_LONG8, tif->tif_dir.td_nstrips, tif->tif_dir.td_stripbytecount_p ) )
+ show +
136
137
138
139
140
141
142
143
144
145
{ tif->tif_flags &= ~TIFF_DIRTYSTRIP; tif->tif_flags &= ~TIFF_BEENWRITING; return 1; } return 0; } /*

[CVE-2023-40093_1.diff] tiffio.h #4
-#define TIFFPRINT_NONE 0x0 /* no extra info */ -#define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */ -#define TIFFPRINT_CURVES 0x2 /* color/gray response curves */ -#define TIFFPRINT_COLORMAP 0x4 /* colormap */ -#define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */ -#define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */ -#define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */ +#define TIFFPRINT_NONE 0x0 /* no extra info */ +#define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */ +#define TIFFPRINT_CURVES 0x2 /* color/gray response curves */ +#define TIFFPRINT_COLORMAP 0x4 /* colormap */ +#define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */ +#define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */ +#define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */ -/* +/*
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tiffio.h
103
104
105
106
107
108
109
110
111
112
#else typedef void* thandle_t; /* client data handle */ #endif /* USE_WIN32_FILEIO */ /* * Flags to pass to TIFFPrintDirectory to control * printing of data structures that are potentially * very large. Bit-or these flags to enable printing * multiple items. */
+ show +
113
114
115
116
117
118
119
#define TIFFPRINT_NONE 0x0 /* no extra info */ #define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */ #define TIFFPRINT_CURVES 0x2 /* color/gray response curves */ #define TIFFPRINT_COLORMAP 0x4 /* colormap */ #define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */ #define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */ #define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */
+ show +
120
121
122
123
124
125
126
127
128
129
/* * Colour conversion stuff */ /* reference white */ #define D65_X0 (95.0470F) #define D65_Y0 (100.0F) #define D65_Z0 (108.8827F)

[CVE-2023-40093_1.diff] tif_luv.c #5
-static int -LogL16Decode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) +static int LogL16Decode(TIFF *tif, uint8_t *op, tmsize_t occ, uint16_t s) - static const char module[] = "LogL16Decode"; - LogLuvState* sp = DecoderState(tif); - int shft; - tmsize_t i; - tmsize_t npixels; - unsigned char* bp; - int16* tp; - int16 b; - tmsize_t cc; - int rc; + static const char module[] = "LogL16Decode"; + LogLuvState *sp = DecoderState(tif); + int shft; + tmsize_t i; + tmsize_t npixels; + unsigned char *bp; + int16_t *tp; + int16_t b; + tmsize_t cc; + int rc; - assert(s == 0); - assert(sp != NULL); + (void)s; + assert(s == 0); + assert(sp != NULL); - npixels = occ / sp->pixel_size; + npixels = occ / sp->pixel_size; - if (sp->user_datafmt == SGILOGDATAFMT_16BIT) - tp = (int16*) op; - else { - if(sp->tbuflen < npixels) { - TIFFErrorExt(tif->tif_clientdata, module, - "Translation buffer too short"); - return (0); - } - tp = (int16*) sp->tbuf; - } - _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0])); + if (sp->user_datafmt == SGILOGDATAFMT_16BIT) + tp = (int16_t *)op; + else + { + if (sp->tbuflen < npixels) + { + TIFFErrorExtR(tif, module, "Translation buffer too short"); + return (0); + } + tp = (int16_t *)sp->tbuf; + } + _TIFFmemset((void *)tp, 0, npixels * sizeof(tp[0])); - bp = (unsigned char*) tif->tif_rawcp; - cc = tif->tif_rawcc; - /* get each byte string */ - for (shft = 8; shft >= 0; shft -=8) { - for (i = 0; i < npixels && cc > 0; ) { - if (*bp >= 128) { /* run */ - if( cc < 2 ) - break; - rc = *bp++ + (2-128); - b = (int16)(*bp++ << shft); - cc -= 2; - while (rc-- && i < npixels) - tp[i++] |= b; - } else { /* non-run */ - rc = *bp++; /* nul is noop */ - while (--cc && rc-- && i < npixels) - tp[i++] |= (int16)*bp++ << shft; - } - } - if (i != npixels) { -#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) - TIFFErrorExt(tif->tif_clientdata, module, - "Not enough data at row %lu (short %I64d pixels)", - (unsigned long) tif->tif_row, - (unsigned __int64) (npixels - i)); -#else - TIFFErrorExt(tif->tif_clientdata, module, - "Not enough data at row %lu (short %llu pixels)", - (unsigned long) tif->tif_row, - (unsigned long long) (npixels - i)); -#endif - tif->tif_rawcp = (uint8*) bp; - tif->tif_rawcc = cc; - return (0); - } - } - (*sp->tfunc)(sp, op, npixels); - tif->tif_rawcp = (uint8*) bp; - tif->tif_rawcc = cc; - return (1); + bp = (unsigned char *)tif->tif_rawcp; + cc = tif->tif_rawcc; + /* get each byte string */ + for (shft = 8; shft >= 0; shft -= 8) + { + for (i = 0; i < npixels && cc > 0;) + { + if (*bp >= 128) + { /* run */ + if (cc < 2) + break; + rc = *bp++ + (2 - 128); + b = (int16_t)(*bp++ << shft); + cc -= 2; + while (rc-- && i < npixels) + tp[i++] |= b; + } + else + { /* non-run */ + rc = *bp++; /* nul is noop */ + while (--cc && rc-- && i < npixels) + tp[i++] |= (int16_t)*bp++ << shft; + } + } + if (i != npixels) + { + TIFFErrorExtR(tif, module, + "Not enough data at row %" PRIu32 + " (short %" TIFF_SSIZE_FORMAT " pixels)", + tif->tif_row, npixels - i); + tif->tif_rawcp = (uint8_t *)bp; + tif->tif_rawcc = cc; + return (0); + } + } + (*sp->tfunc)(sp, op, npixels); + tif->tif_rawcp = (uint8_t *)bp; + tif->tif_rawcc = cc; + return (1); -static int -LogLuvDecode24(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) +static int LogLuvDecode24(TIFF *tif, uint8_t *op, tmsize_t occ, uint16_t s) - static const char module[] = "LogLuvDecode24"; - LogLuvState* sp = DecoderState(tif); - tmsize_t cc; - tmsize_t i; - tmsize_t npixels; - unsigned char* bp; - uint32* tp; + static const char module[] = "LogLuvDecode24"; + LogLuvState *sp = DecoderState(tif); + tmsize_t cc; + tmsize_t i; + tmsize_t npixels; + unsigned char *bp; + uint32_t *tp; - assert(s == 0); - assert(sp != NULL); + (void)s; + assert(s == 0); + assert(sp != NULL); - npixels = occ / sp->pixel_size; + npixels = occ / sp->pixel_size; - if (sp->user_datafmt == SGILOGDATAFMT_RAW) - tp = (uint32 *)op; - else { - if(sp->tbuflen < npixels) { - TIFFErrorExt(tif->tif_clientdata, module, - "Translation buffer too short"); - return (0); - } - tp = (uint32 *) sp->tbuf; - } - /* copy to array of uint32 */ - bp = (unsigned char*) tif->tif_rawcp; - cc = tif->tif_rawcc; - for (i = 0; i < npixels && cc >= 3; i++) { - tp[i] = bp[0] << 16 | bp[1] << 8 | bp[2]; - bp += 3; - cc -= 3; - } - tif->tif_rawcp = (uint8*) bp; - tif->tif_rawcc = cc; - if (i != npixels) { -#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) - TIFFErrorExt(tif->tif_clientdata, module, - "Not enough data at row %lu (short %I64d pixels)", - (unsigned long) tif->tif_row, - (unsigned __int64) (npixels - i)); -#else - TIFFErrorExt(tif->tif_clientdata, module, - "Not enough data at row %lu (short %llu pixels)", - (unsigned long) tif->tif_row, - (unsigned long long) (npixels - i)); -#endif - return (0); - } - (*sp->tfunc)(sp, op, npixels); - return (1); + if (sp->user_datafmt == SGILOGDATAFMT_RAW) + tp = (uint32_t *)op; + else + { + if (sp->tbuflen < npixels) + { + TIFFErrorExtR(tif, module, "Translation buffer too short"); + return (0); + } + tp = (uint32_t *)sp->tbuf; + } + /* copy to array of uint32_t */ + bp = (unsigned char *)tif->tif_rawcp; + cc = tif->tif_rawcc; + for (i = 0; i < npixels && cc >= 3; i++) + { + tp[i] = bp[0] << 16 | bp[1] << 8 | bp[2]; + bp += 3; + cc -= 3; + } + tif->tif_rawcp = (uint8_t *)bp; + tif->tif_rawcc = cc; + if (i != npixels) + { + TIFFErrorExtR(tif, module, + "Not enough data at row %" PRIu32 + " (short %" TIFF_SSIZE_FORMAT " pixels)", + tif->tif_row, npixels - i); + return (0); + } + (*sp->tfunc)(sp, op, npixels); + return (1); -static int -LogLuvDecode32(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) +static int LogLuvDecode32(TIFF *tif, uint8_t *op, tmsize_t occ, uint16_t s) - static const char module[] = "LogLuvDecode32"; - LogLuvState* sp; - int shft; - tmsize_t i; - tmsize_t npixels; - unsigned char* bp; - uint32* tp; - uint32 b; - tmsize_t cc; - int rc; + static const char module[] = "LogLuvDecode32"; + LogLuvState *sp; + int shft; + tmsize_t i; + tmsize_t npixels; + unsigned char *bp; + uint32_t *tp; + uint32_t b; + tmsize_t cc; + int rc; - assert(s == 0); - sp = DecoderState(tif); - assert(sp != NULL); + (void)s; + assert(s == 0); + sp = DecoderState(tif); + assert(sp != NULL); - npixels = occ / sp->pixel_size; + npixels = occ / sp->pixel_size; - if (sp->user_datafmt == SGILOGDATAFMT_RAW) - tp = (uint32*) op; - else { - if(sp->tbuflen < npixels) { - TIFFErrorExt(tif->tif_clientdata, module, - "Translation buffer too short"); - return (0); - } - tp = (uint32*) sp->tbuf; - } - _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0])); + if (sp->user_datafmt == SGILOGDATAFMT_RAW) + tp = (uint32_t *)op; + else + { + if (sp->tbuflen < npixels) + { + TIFFErrorExtR(tif, module, "Translation buffer too short"); + return (0); + } + tp = (uint32_t *)sp->tbuf; + } + _TIFFmemset((void *)tp, 0, npixels * sizeof(tp[0])); - bp = (unsigned char*) tif->tif_rawcp; - cc = tif->tif_rawcc; - /* get each byte string */ - for (shft = 24; shft >= 0; shft -=8) { - for (i = 0; i < npixels && cc > 0; ) { - if (*bp >= 128) { /* run */ - if( cc < 2 ) - break; - rc = *bp++ + (2-128); - b = (uint32)*bp++ << shft; - cc -= 2; - while (rc-- && i < npixels) - tp[i++] |= b; - } else { /* non-run */ - rc = *bp++; /* nul is noop */ - while (--cc && rc-- && i < npixels) - tp[i++] |= (uint32)*bp++ << shft; - } - } - if (i != npixels) { -#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) - TIFFErrorExt(tif->tif_clientdata, module, - "Not enough data at row %lu (short %I64d pixels)", - (unsigned long) tif->tif_row, - (unsigned __int64) (npixels - i)); -#else - TIFFErrorExt(tif->tif_clientdata, module, - "Not enough data at row %lu (short %llu pixels)", - (unsigned long) tif->tif_row, - (unsigned long long) (npixels - i)); -#endif - tif->tif_rawcp = (uint8*) bp; - tif->tif_rawcc = cc; - return (0); - } - } - (*sp->tfunc)(sp, op, npixels); - tif->tif_rawcp = (uint8*) bp; - tif->tif_rawcc = cc; - return (1); + bp = (unsigned char *)tif->tif_rawcp; + cc = tif->tif_rawcc; + /* get each byte string */ + for (shft = 24; shft >= 0; shft -= 8) + { + for (i = 0; i < npixels && cc > 0;) + { + if (*bp >= 128) + { /* run */ + if (cc < 2) + break; + rc = *bp++ + (2 - 128); + b = (uint32_t)*bp++ << shft; + cc -= 2; + while (rc-- && i < npixels) + tp[i++] |= b; + } + else + { /* non-run */ + rc = *bp++; /* nul is noop */ + while (--cc && rc-- && i < npixels) + tp[i++] |= (uint32_t)*bp++ << shft; + } + } + if (i != npixels) + { + TIFFErrorExtR(tif, module, + "Not enough data at row %" PRIu32 + " (short %" TIFF_SSIZE_FORMAT " pixels)", + tif->tif_row, npixels - i); + tif->tif_rawcp = (uint8_t *)bp; + tif->tif_rawcc = cc; + return (0); + } + } + (*sp->tfunc)(sp, op, npixels); + tif->tif_rawcp = (uint8_t *)bp; + tif->tif_rawcc = cc; + return (1);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_luv.c
172
173
174
175
176
177
178
179
180
181
#define DecoderState(tif) ((LogLuvState*) (tif)->tif_data) #define EncoderState(tif) ((LogLuvState*) (tif)->tif_data) #define SGILOGDATAFMT_UNKNOWN -1 #define MINRUN 4 /* minimum run length */ /* * Decode a string of 16-bit gray pixels. */
+ show +
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
static int LogL16Decode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) { static const char module[] = "LogL16Decode"; LogLuvState* sp = DecoderState(tif); int shft; tmsize_t i; tmsize_t npixels; unsigned char* bp; int16* tp; int16 b; tmsize_t cc; int rc; assert(s == 0); assert(sp != NULL); npixels = occ / sp->pixel_size; if (sp->user_datafmt == SGILOGDATAFMT_16BIT) tp = (int16*) op; else { if(sp->tbuflen < npixels) { TIFFErrorExt(tif->tif_clientdata, module, "Translation buffer too short"); return (0); } tp = (int16*) sp->tbuf; } _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0])); bp = (unsigned char*) tif->tif_rawcp; cc = tif->tif_rawcc; /* get each byte string */ for (shft = 8; shft >= 0; shft -=8) { for (i = 0; i < npixels && cc > 0; ) { if (*bp >= 128) { /* run */ if( cc < 2 ) break; rc = *bp++ + (2-128); b = (int16)(*bp++ << shft); cc -= 2; while (rc-- && i < npixels) tp[i++] |= b; } else { /* non-run */ rc = *bp++; /* nul is noop */ while (--cc && rc-- && i < npixels) tp[i++] |= (int16)*bp++ << shft; } } if (i != npixels) { #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) TIFFErrorExt(tif->tif_clientdata, module, "Not enough data at row %lu (short %I64d pixels)", (unsigned long) tif->tif_row, (unsigned __int64) (npixels - i)); #else TIFFErrorExt(tif->tif_clientdata, module, "Not enough data at row %lu (short %llu pixels)", (unsigned long) tif->tif_row, (unsigned long long) (npixels - i)); #endif tif->tif_rawcp = (uint8*) bp; tif->tif_rawcc = cc; return (0); } } (*sp->tfunc)(sp, op, npixels); tif->tif_rawcp = (uint8*) bp; tif->tif_rawcc = cc; return (1); } /* * Decode a string of 24-bit pixels. */ static int LogLuvDecode24(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) { static const char module[] = "LogLuvDecode24"; LogLuvState* sp = DecoderState(tif); tmsize_t cc; tmsize_t i; tmsize_t npixels; unsigned char* bp; uint32* tp; assert(s == 0); assert(sp != NULL); npixels = occ / sp->pixel_size; if (sp->user_datafmt == SGILOGDATAFMT_RAW) tp = (uint32 *)op; else { if(sp->tbuflen < npixels) { TIFFErrorExt(tif->tif_clientdata, module, "Translation buffer too short"); return (0); } tp = (uint32 *) sp->tbuf; } /* copy to array of uint32 */ bp = (unsigned char*) tif->tif_rawcp; cc = tif->tif_rawcc; for (i = 0; i < npixels && cc >= 3; i++) { tp[i] = bp[0] << 16 | bp[1] << 8 | bp[2]; bp += 3; cc -= 3; } tif->tif_rawcp = (uint8*) bp; tif->tif_rawcc = cc; if (i != npixels) { #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) TIFFErrorExt(tif->tif_clientdata, module, "Not enough data at row %lu (short %I64d pixels)", (unsigned long) tif->tif_row, (unsigned __int64) (npixels - i)); #else TIFFErrorExt(tif->tif_clientdata, module, "Not enough data at row %lu (short %llu pixels)", (unsigned long) tif->tif_row, (unsigned long long) (npixels - i)); #endif return (0); } (*sp->tfunc)(sp, op, npixels); return (1); } /* * Decode a string of 32-bit pixels. */ static int LogLuvDecode32(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) { static const char module[] = "LogLuvDecode32"; LogLuvState* sp; int shft; tmsize_t i; tmsize_t npixels; unsigned char* bp; uint32* tp; uint32 b; tmsize_t cc; int rc; assert(s == 0); sp = DecoderState(tif); assert(sp != NULL); npixels = occ / sp->pixel_size; if (sp->user_datafmt == SGILOGDATAFMT_RAW) tp = (uint32*) op; else { if(sp->tbuflen < npixels) { TIFFErrorExt(tif->tif_clientdata, module, "Translation buffer too short"); return (0); } tp = (uint32*) sp->tbuf; } _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0])); bp = (unsigned char*) tif->tif_rawcp; cc = tif->tif_rawcc; /* get each byte string */ for (shft = 24; shft >= 0; shft -=8) { for (i = 0; i < npixels && cc > 0; ) { if (*bp >= 128) { /* run */ if( cc < 2 ) break; rc = *bp++ + (2-128); b = (uint32)*bp++ << shft; cc -= 2; while (rc-- && i < npixels) tp[i++] |= b; } else { /* non-run */ rc = *bp++; /* nul is noop */ while (--cc && rc-- && i < npixels) tp[i++] |= (uint32)*bp++ << shft; } } if (i != npixels) { #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) TIFFErrorExt(tif->tif_clientdata, module, "Not enough data at row %lu (short %I64d pixels)", (unsigned long) tif->tif_row, (unsigned __int64) (npixels - i)); #else TIFFErrorExt(tif->tif_clientdata, module, "Not enough data at row %lu (short %llu pixels)", (unsigned long) tif->tif_row, (unsigned long long) (npixels - i)); #endif tif->tif_rawcp = (uint8*) bp; tif->tif_rawcc = cc; return (0); } } (*sp->tfunc)(sp, op, npixels); tif->tif_rawcp = (uint8*) bp; tif->tif_rawcc = cc; return (1);
+ show +
387
388
389
390
391
392
393
394
395
396
} /* * Decode a strip of pixels. We break it into rows to * maintain synchrony with the encode algorithm, which * is row by row. */ static int LogLuvDecodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) {

[CVE-2023-40093_1.diff] tif_luv.c #6
-static int -LogLuvDecodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) +static int LogLuvDecodeStrip(TIFF *tif, uint8_t *bp, tmsize_t cc, uint16_t s) - tmsize_t rowlen = TIFFScanlineSize(tif); + tmsize_t rowlen = TIFFScanlineSize(tif); - if (rowlen == 0) - return 0; + if (rowlen == 0) + return 0; - assert(cc%rowlen == 0); - while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) { - bp += rowlen; - cc -= rowlen; - } - return (cc == 0); + assert(cc % rowlen == 0); + while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) + { + bp += rowlen; + cc -= rowlen; + } + return (cc == 0);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_luv.c
384
385
386
387
388
389
390
391
392
393
tif->tif_rawcp = (uint8*) bp; tif->tif_rawcc = cc; return (1); } /* * Decode a strip of pixels. We break it into rows to * maintain synchrony with the encode algorithm, which * is row by row. */
+ show +
394
395
396
397
398
399
400
401
402
403
404
405
406
407
static int LogLuvDecodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) { tmsize_t rowlen = TIFFScanlineSize(tif); if (rowlen == 0) return 0; assert(cc%rowlen == 0); while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) { bp += rowlen; cc -= rowlen; } return (cc == 0);
+ show +
408
409
410
411
412
413
414
415
416
417
} /* * Decode a tile of pixels. We break it into rows to * maintain synchrony with the encode algorithm, which * is row by row. */ static int LogLuvDecodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) {

[CVE-2023-40093_1.diff] tif_luv.c #7
-static int -LogLuvDecodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) +static int LogLuvDecodeTile(TIFF *tif, uint8_t *bp, tmsize_t cc, uint16_t s) - tmsize_t rowlen = TIFFTileRowSize(tif); + tmsize_t rowlen = TIFFTileRowSize(tif); - if (rowlen == 0) - return 0; + if (rowlen == 0) + return 0; - assert(cc%rowlen == 0); - while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) { - bp += rowlen; - cc -= rowlen; - } - return (cc == 0); + assert(cc % rowlen == 0); + while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) + { + bp += rowlen; + cc -= rowlen; + } + return (cc == 0); -static int -LogL16Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) +static int LogL16Encode(TIFF *tif, uint8_t *bp, tmsize_t cc, uint16_t s) - static const char module[] = "LogL16Encode"; - LogLuvState* sp = EncoderState(tif); - int shft; - tmsize_t i; - tmsize_t j; - tmsize_t npixels; - uint8* op; - int16* tp; - int16 b; - tmsize_t occ; - int rc=0, mask; - tmsize_t beg; + static const char module[] = "LogL16Encode"; + LogLuvState *sp = EncoderState(tif); + int shft; + tmsize_t i; + tmsize_t j; + tmsize_t npixels; + uint8_t *op; + int16_t *tp; + int16_t b; + tmsize_t occ; + int rc = 0, mask; + tmsize_t beg; - assert(s == 0); - assert(sp != NULL); - npixels = cc / sp->pixel_size; + (void)s; + assert(s == 0); + assert(sp != NULL); + npixels = cc / sp->pixel_size; - if (sp->user_datafmt == SGILOGDATAFMT_16BIT) - tp = (int16*) bp; - else { - tp = (int16*) sp->tbuf; - if(sp->tbuflen < npixels) { - TIFFErrorExt(tif->tif_clientdata, module, - "Translation buffer too short"); - return (0); - } - (*sp->tfunc)(sp, bp, npixels); - } - /* compress each byte string */ - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - for (shft = 8; shft >= 0; shft -=8) { - for (i = 0; i < npixels; i += rc) { - if (occ < 4) { - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; - if (!TIFFFlushData1(tif)) - return (0); - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - } - mask = 0xff << shft; /* find next run */ - for (beg = i; beg < npixels; beg += rc) { - b = (int16) (tp[beg] & mask); - rc = 1; - while (rc < 127+2 && beg+rc < npixels && - (tp[beg+rc] & mask) == b) - rc++; - if (rc >= MINRUN) - break; /* long enough */ - } - if (beg-i > 1 && beg-i < MINRUN) { - b = (int16) (tp[i] & mask);/*check short run */ - j = i+1; - while ((tp[j++] & mask) == b) - if (j == beg) { - *op++ = (uint8)(128-2+j-i); - *op++ = (uint8)(b >> shft); - occ -= 2; - i = beg; - break; - } - } - while (i < beg) { /* write out non-run */ - if ((j = beg-i) > 127) j = 127; - if (occ < j+3) { - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; - if (!TIFFFlushData1(tif)) - return (0); - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - } - *op++ = (uint8) j; occ--; - while (j--) { - *op++ = (uint8) (tp[i++] >> shft & 0xff); - occ--; - } - } - if (rc >= MINRUN) { /* write out run */ - *op++ = (uint8) (128-2+rc); - *op++ = (uint8) (tp[beg] >> shft & 0xff); - occ -= 2; - } else - rc = 0; - } - } - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (sp->user_datafmt == SGILOGDATAFMT_16BIT) + tp = (int16_t *)bp; + else + { + tp = (int16_t *)sp->tbuf; + if (sp->tbuflen < npixels) + { + TIFFErrorExtR(tif, module, "Translation buffer too short"); + return (0); + } + (*sp->tfunc)(sp, bp, npixels); + } + /* compress each byte string */ + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + for (shft = 8; shft >= 0; shft -= 8) + { + for (i = 0; i < npixels; i += rc) + { + if (occ < 4) + { + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (!TIFFFlushData1(tif)) + return (0); + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + } + mask = 0xff << shft; /* find next run */ + for (beg = i; beg < npixels; beg += rc) + { + b = (int16_t)(tp[beg] & mask); + rc = 1; + while (rc < 127 + 2 && beg + rc < npixels && + (tp[beg + rc] & mask) == b) + rc++; + if (rc >= MINRUN) + break; /* long enough */ + } + if (beg - i > 1 && beg - i < MINRUN) + { + b = (int16_t)(tp[i] & mask); /*check short run */ + j = i + 1; + while ((tp[j++] & mask) == b) + if (j == beg) + { + *op++ = (uint8_t)(128 - 2 + j - i); + *op++ = (uint8_t)(b >> shft); + occ -= 2; + i = beg; + break; + } + } + while (i < beg) + { /* write out non-run */ + if ((j = beg - i) > 127) + j = 127; + if (occ < j + 3) + { + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (!TIFFFlushData1(tif)) + return (0); + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + } + *op++ = (uint8_t)j; + occ--; + while (j--) + { + *op++ = (uint8_t)(tp[i++] >> shft & 0xff); + occ--; + } + } + if (rc >= MINRUN) + { /* write out run */ + *op++ = (uint8_t)(128 - 2 + rc); + *op++ = (uint8_t)(tp[beg] >> shft & 0xff); + occ -= 2; + } + else + rc = 0; + } + } + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; - return (1); + return (1); -static int -LogLuvEncode24(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) +static int LogLuvEncode24(TIFF *tif, uint8_t *bp, tmsize_t cc, uint16_t s) - static const char module[] = "LogLuvEncode24"; - LogLuvState* sp = EncoderState(tif); - tmsize_t i; - tmsize_t npixels; - tmsize_t occ; - uint8* op; - uint32* tp; + static const char module[] = "LogLuvEncode24"; + LogLuvState *sp = EncoderState(tif); + tmsize_t i; + tmsize_t npixels; + tmsize_t occ; + uint8_t *op; + uint32_t *tp; - assert(s == 0); - assert(sp != NULL); - npixels = cc / sp->pixel_size; + (void)s; + assert(s == 0); + assert(sp != NULL); + npixels = cc / sp->pixel_size; - if (sp->user_datafmt == SGILOGDATAFMT_RAW) - tp = (uint32*) bp; - else { - tp = (uint32*) sp->tbuf; - if(sp->tbuflen < npixels) { - TIFFErrorExt(tif->tif_clientdata, module, - "Translation buffer too short"); - return (0); - } - (*sp->tfunc)(sp, bp, npixels); - } - /* write out encoded pixels */ - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - for (i = npixels; i--; ) { - if (occ < 3) { - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; - if (!TIFFFlushData1(tif)) - return (0); - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - } - *op++ = (uint8)(*tp >> 16); - *op++ = (uint8)(*tp >> 8 & 0xff); - *op++ = (uint8)(*tp++ & 0xff); - occ -= 3; - } - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (sp->user_datafmt == SGILOGDATAFMT_RAW) + tp = (uint32_t *)bp; + else + { + tp = (uint32_t *)sp->tbuf; + if (sp->tbuflen < npixels) + { + TIFFErrorExtR(tif, module, "Translation buffer too short"); + return (0); + } + (*sp->tfunc)(sp, bp, npixels); + } + /* write out encoded pixels */ + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + for (i = npixels; i--;) + { + if (occ < 3) + { + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (!TIFFFlushData1(tif)) + return (0); + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + } + *op++ = (uint8_t)(*tp >> 16); + *op++ = (uint8_t)(*tp >> 8 & 0xff); + *op++ = (uint8_t)(*tp++ & 0xff); + occ -= 3; + } + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; - return (1); + return (1); -static int -LogLuvEncode32(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) +static int LogLuvEncode32(TIFF *tif, uint8_t *bp, tmsize_t cc, uint16_t s) - static const char module[] = "LogLuvEncode32"; - LogLuvState* sp = EncoderState(tif); - int shft; - tmsize_t i; - tmsize_t j; - tmsize_t npixels; - uint8* op; - uint32* tp; - uint32 b; - tmsize_t occ; - int rc=0, mask; - tmsize_t beg; + static const char module[] = "LogLuvEncode32"; + LogLuvState *sp = EncoderState(tif); + int shft; + tmsize_t i; + tmsize_t j; + tmsize_t npixels; + uint8_t *op; + uint32_t *tp; + uint32_t b; + tmsize_t occ; + int rc = 0; + tmsize_t beg; - assert(s == 0); - assert(sp != NULL); + (void)s; + assert(s == 0); + assert(sp != NULL); - npixels = cc / sp->pixel_size; + npixels = cc / sp->pixel_size; - if (sp->user_datafmt == SGILOGDATAFMT_RAW) - tp = (uint32*) bp; - else { - tp = (uint32*) sp->tbuf; - if(sp->tbuflen < npixels) { - TIFFErrorExt(tif->tif_clientdata, module, - "Translation buffer too short"); - return (0); - } - (*sp->tfunc)(sp, bp, npixels); - } - /* compress each byte string */ - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - for (shft = 24; shft >= 0; shft -=8) { - for (i = 0; i < npixels; i += rc) { - if (occ < 4) { - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; - if (!TIFFFlushData1(tif)) - return (0); - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - } - mask = 0xff << shft; /* find next run */ - for (beg = i; beg < npixels; beg += rc) { - b = tp[beg] & mask; - rc = 1; - while (rc < 127+2 && beg+rc < npixels && - (tp[beg+rc] & mask) == b) - rc++; - if (rc >= MINRUN) - break; /* long enough */ - } - if (beg-i > 1 && beg-i < MINRUN) { - b = tp[i] & mask; /* check short run */ - j = i+1; - while ((tp[j++] & mask) == b) - if (j == beg) { - *op++ = (uint8)(128-2+j-i); - *op++ = (uint8)(b >> shft); - occ -= 2; - i = beg; - break; - } - } - while (i < beg) { /* write out non-run */ - if ((j = beg-i) > 127) j = 127; - if (occ < j+3) { - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; - if (!TIFFFlushData1(tif)) - return (0); - op = tif->tif_rawcp; - occ = tif->tif_rawdatasize - tif->tif_rawcc; - } - *op++ = (uint8) j; occ--; - while (j--) { - *op++ = (uint8)(tp[i++] >> shft & 0xff); - occ--; - } - } - if (rc >= MINRUN) { /* write out run */ - *op++ = (uint8) (128-2+rc); - *op++ = (uint8)(tp[beg] >> shft & 0xff); - occ -= 2; - } else - rc = 0; - } - } - tif->tif_rawcp = op; - tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (sp->user_datafmt == SGILOGDATAFMT_RAW) + tp = (uint32_t *)bp; + else + { + tp = (uint32_t *)sp->tbuf; + if (sp->tbuflen < npixels) + { + TIFFErrorExtR(tif, module, "Translation buffer too short"); + return (0); + } + (*sp->tfunc)(sp, bp, npixels); + } + /* compress each byte string */ + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + for (shft = 24; shft >= 0; shft -= 8) + { + const uint32_t mask = 0xffU << shft; /* find next run */ + for (i = 0; i < npixels; i += rc) + { + if (occ < 4) + { + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (!TIFFFlushData1(tif)) + return (0); + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + } + for (beg = i; beg < npixels; beg += rc) + { + b = tp[beg] & mask; + rc = 1; + while (rc < 127 + 2 && beg + rc < npixels && + (tp[beg + rc] & mask) == b) + rc++; + if (rc >= MINRUN) + break; /* long enough */ + } + if (beg - i > 1 && beg - i < MINRUN) + { + b = tp[i] & mask; /* check short run */ + j = i + 1; + while ((tp[j++] & mask) == b) + if (j == beg) + { + *op++ = (uint8_t)(128 - 2 + j - i); + *op++ = (uint8_t)(b >> shft); + occ -= 2; + i = beg; + break; + } + } + while (i < beg) + { /* write out non-run */ + if ((j = beg - i) > 127) + j = 127; + if (occ < j + 3) + { + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; + if (!TIFFFlushData1(tif)) + return (0); + op = tif->tif_rawcp; + occ = tif->tif_rawdatasize - tif->tif_rawcc; + } + *op++ = (uint8_t)j; + occ--; + while (j--) + { + *op++ = (uint8_t)(tp[i++] >> shft & 0xff); + occ--; + } + } + if (rc >= MINRUN) + { /* write out run */ + *op++ = (uint8_t)(128 - 2 + rc); + *op++ = (uint8_t)(tp[beg] >> shft & 0xff); + occ -= 2; + } + else + rc = 0; + } + } + tif->tif_rawcp = op; + tif->tif_rawcc = tif->tif_rawdatasize - occ; - return (1); + return (1); -static int -LogLuvEncodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) +static int LogLuvEncodeStrip(TIFF *tif, uint8_t *bp, tmsize_t cc, uint16_t s) - tmsize_t rowlen = TIFFScanlineSize(tif); + tmsize_t rowlen = TIFFScanlineSize(tif); - if (rowlen == 0) - return 0; + if (rowlen == 0) + return 0; - assert(cc%rowlen == 0); - while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) { - bp += rowlen; - cc -= rowlen; - } - return (cc == 0); + assert(cc % rowlen == 0); + while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) + { + bp += rowlen; + cc -= rowlen; + } + return (cc == 0); -static int -LogLuvEncodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) +static int LogLuvEncodeTile(TIFF *tif, uint8_t *bp, tmsize_t cc, uint16_t s) - tmsize_t rowlen = TIFFTileRowSize(tif); + tmsize_t rowlen = TIFFTileRowSize(tif); - if (rowlen == 0) - return 0; + if (rowlen == 0) + return 0; - assert(cc%rowlen == 0); - while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) { - bp += rowlen; - cc -= rowlen; - } - return (cc == 0); + assert(cc % rowlen == 0); + while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) + { + bp += rowlen; + cc -= rowlen; + } + return (cc == 0);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_luv.c
405
406
407
408
409
410
411
412
413
414
cc -= rowlen; } return (cc == 0); } /* * Decode a tile of pixels. We break it into rows to * maintain synchrony with the encode algorithm, which * is row by row. */
+ show +
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
static int LogLuvDecodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) { tmsize_t rowlen = TIFFTileRowSize(tif); if (rowlen == 0) return 0; assert(cc%rowlen == 0); while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s)) { bp += rowlen; cc -= rowlen; } return (cc == 0); } /* * Encode a row of 16-bit pixels. */ static int LogL16Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) { static const char module[] = "LogL16Encode"; LogLuvState* sp = EncoderState(tif); int shft; tmsize_t i; tmsize_t j; tmsize_t npixels; uint8* op; int16* tp; int16 b; tmsize_t occ; int rc=0, mask; tmsize_t beg; assert(s == 0); assert(sp != NULL); npixels = cc / sp->pixel_size; if (sp->user_datafmt == SGILOGDATAFMT_16BIT) tp = (int16*) bp; else { tp = (int16*) sp->tbuf; if(sp->tbuflen < npixels) { TIFFErrorExt(tif->tif_clientdata, module, "Translation buffer too short"); return (0); } (*sp->tfunc)(sp, bp, npixels); } /* compress each byte string */ op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; for (shft = 8; shft >= 0; shft -=8) { for (i = 0; i < npixels; i += rc) { if (occ < 4) { tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; if (!TIFFFlushData1(tif)) return (0); op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; } mask = 0xff << shft; /* find next run */ for (beg = i; beg < npixels; beg += rc) { b = (int16) (tp[beg] & mask); rc = 1; while (rc < 127+2 && beg+rc < npixels && (tp[beg+rc] & mask) == b) rc++; if (rc >= MINRUN) break; /* long enough */ } if (beg-i > 1 && beg-i < MINRUN) { b = (int16) (tp[i] & mask);/*check short run */ j = i+1; while ((tp[j++] & mask) == b) if (j == beg) { *op++ = (uint8)(128-2+j-i); *op++ = (uint8)(b >> shft); occ -= 2; i = beg; break; } } while (i < beg) { /* write out non-run */ if ((j = beg-i) > 127) j = 127; if (occ < j+3) { tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; if (!TIFFFlushData1(tif)) return (0); op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; } *op++ = (uint8) j; occ--; while (j--) { *op++ = (uint8) (tp[i++] >> shft & 0xff); occ--; } } if (rc >= MINRUN) { /* write out run */ *op++ = (uint8) (128-2+rc); *op++ = (uint8) (tp[beg] >> shft & 0xff); occ -= 2; } else rc = 0; } } tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; return (1); } /* * Encode a row of 24-bit pixels. */ static int LogLuvEncode24(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) { static const char module[] = "LogLuvEncode24"; LogLuvState* sp = EncoderState(tif); tmsize_t i; tmsize_t npixels; tmsize_t occ; uint8* op; uint32* tp; assert(s == 0); assert(sp != NULL); npixels = cc / sp->pixel_size; if (sp->user_datafmt == SGILOGDATAFMT_RAW) tp = (uint32*) bp; else { tp = (uint32*) sp->tbuf; if(sp->tbuflen < npixels) { TIFFErrorExt(tif->tif_clientdata, module, "Translation buffer too short"); return (0); } (*sp->tfunc)(sp, bp, npixels); } /* write out encoded pixels */ op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; for (i = npixels; i--; ) { if (occ < 3) { tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; if (!TIFFFlushData1(tif)) return (0); op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; } *op++ = (uint8)(*tp >> 16); *op++ = (uint8)(*tp >> 8 & 0xff); *op++ = (uint8)(*tp++ & 0xff); occ -= 3; } tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; return (1); } /* * Encode a row of 32-bit pixels. */ static int LogLuvEncode32(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) { static const char module[] = "LogLuvEncode32"; LogLuvState* sp = EncoderState(tif); int shft; tmsize_t i; tmsize_t j; tmsize_t npixels; uint8* op; uint32* tp; uint32 b; tmsize_t occ; int rc=0, mask; tmsize_t beg; assert(s == 0); assert(sp != NULL); npixels = cc / sp->pixel_size; if (sp->user_datafmt == SGILOGDATAFMT_RAW) tp = (uint32*) bp; else { tp = (uint32*) sp->tbuf; if(sp->tbuflen < npixels) { TIFFErrorExt(tif->tif_clientdata, module, "Translation buffer too short"); return (0); } (*sp->tfunc)(sp, bp, npixels); } /* compress each byte string */ op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; for (shft = 24; shft >= 0; shft -=8) { for (i = 0; i < npixels; i += rc) { if (occ < 4) { tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; if (!TIFFFlushData1(tif)) return (0); op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; } mask = 0xff << shft; /* find next run */ for (beg = i; beg < npixels; beg += rc) { b = tp[beg] & mask; rc = 1; while (rc < 127+2 && beg+rc < npixels && (tp[beg+rc] & mask) == b) rc++; if (rc >= MINRUN) break; /* long enough */ } if (beg-i > 1 && beg-i < MINRUN) { b = tp[i] & mask; /* check short run */ j = i+1; while ((tp[j++] & mask) == b) if (j == beg) { *op++ = (uint8)(128-2+j-i); *op++ = (uint8)(b >> shft); occ -= 2; i = beg; break; } } while (i < beg) { /* write out non-run */ if ((j = beg-i) > 127) j = 127; if (occ < j+3) { tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; if (!TIFFFlushData1(tif)) return (0); op = tif->tif_rawcp; occ = tif->tif_rawdatasize - tif->tif_rawcc; } *op++ = (uint8) j; occ--; while (j--) { *op++ = (uint8)(tp[i++] >> shft & 0xff); occ--; } } if (rc >= MINRUN) { /* write out run */ *op++ = (uint8) (128-2+rc); *op++ = (uint8)(tp[beg] >> shft & 0xff); occ -= 2; } else rc = 0; } } tif->tif_rawcp = op; tif->tif_rawcc = tif->tif_rawdatasize - occ; return (1); } /* * Encode a strip of pixels. We break it into rows to * avoid encoding runs across row boundaries. */ static int LogLuvEncodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) { tmsize_t rowlen = TIFFScanlineSize(tif); if (rowlen == 0) return 0; assert(cc%rowlen == 0); while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) { bp += rowlen; cc -= rowlen; } return (cc == 0); } /* * Encode a tile of pixels. We break it into rows to * avoid encoding runs across row boundaries. */ static int LogLuvEncodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) { tmsize_t rowlen = TIFFTileRowSize(tif); if (rowlen == 0) return 0; assert(cc%rowlen == 0); while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1) { bp += rowlen; cc -= rowlen; } return (cc == 0);
+ show +
720
721
722
723
724
725
726
727
728
729
} /* * Encode/Decode functions for converting to and from user formats. */ #include "uvcode.h" #ifndef UVSCALE #define U_NEU 0.210526316

[CVE-2023-40093_1.diff] tif_compress.c #2
-static int -TIFFNoEncode(TIFF* tif, const char* method) +static int TIFFNoEncode(TIFF *tif, const char *method) - const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); + const TIFFCodec *c = TIFFFindCODEC(tif->tif_dir.td_compression); - if (c) { - TIFFErrorExt(tif->tif_clientdata, tif->tif_name, - "%s %s encoding is not implemented", - c->name, method); - } else { - TIFFErrorExt(tif->tif_clientdata, tif->tif_name, - "Compression scheme %u %s encoding is not implemented", - tif->tif_dir.td_compression, method); - } - return (-1); + if (c) + { + TIFFErrorExtR(tif, tif->tif_name, "%s %s encoding is not implemented", + c->name, method); + } + else + { + TIFFErrorExtR(tif, tif->tif_name, + "Compression scheme %" PRIu16 + " %s encoding is not implemented", + tif->tif_dir.td_compression, method); + } + return (-1); -int -_TIFFNoRowEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) +int _TIFFNoRowEncode(TIFF *tif, uint8_t *pp, tmsize_t cc, uint16_t s) - (void) pp; (void) cc; (void) s; - return (TIFFNoEncode(tif, "scanline")); + (void)pp; + (void)cc; + (void)s; + return (TIFFNoEncode(tif, "scanline")); -int -_TIFFNoStripEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) +int _TIFFNoStripEncode(TIFF *tif, uint8_t *pp, tmsize_t cc, uint16_t s) - (void) pp; (void) cc; (void) s; - return (TIFFNoEncode(tif, "strip")); + (void)pp; + (void)cc; + (void)s; + return (TIFFNoEncode(tif, "strip")); -int -_TIFFNoTileEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) +int _TIFFNoTileEncode(TIFF *tif, uint8_t *pp, tmsize_t cc, uint16_t s) - (void) pp; (void) cc; (void) s; - return (TIFFNoEncode(tif, "tile")); + (void)pp; + (void)cc; + (void)s; + return (TIFFNoEncode(tif, "tile")); -static int -TIFFNoDecode(TIFF* tif, const char* method) +static int TIFFNoDecode(TIFF *tif, const char *method) - const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); + const TIFFCodec *c = TIFFFindCODEC(tif->tif_dir.td_compression); - if (c) - TIFFErrorExt(tif->tif_clientdata, tif->tif_name, - "%s %s decoding is not implemented", - c->name, method); - else - TIFFErrorExt(tif->tif_clientdata, tif->tif_name, - "Compression scheme %u %s decoding is not implemented", - tif->tif_dir.td_compression, method); - return (0); + if (c) + TIFFErrorExtR(tif, tif->tif_name, "%s %s decoding is not implemented", + c->name, method); + else + TIFFErrorExtR(tif, tif->tif_name, + "Compression scheme %" PRIu16 + " %s decoding is not implemented", + tif->tif_dir.td_compression, method); + return (0); -static int -_TIFFNoFixupTags(TIFF* tif) +static int _TIFFNoFixupTags(TIFF *tif) - (void) tif; - return (1); + (void)tif; + return (1); -int -_TIFFNoRowDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) +int _TIFFNoRowDecode(TIFF *tif, uint8_t *pp, tmsize_t cc, uint16_t s) - (void) pp; (void) cc; (void) s; - return (TIFFNoDecode(tif, "scanline")); + (void)pp; + (void)cc; + (void)s; + return (TIFFNoDecode(tif, "scanline")); -int -_TIFFNoStripDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) +int _TIFFNoStripDecode(TIFF *tif, uint8_t *pp, tmsize_t cc, uint16_t s) - (void) pp; (void) cc; (void) s; - return (TIFFNoDecode(tif, "strip")); + (void)pp; + (void)cc; + (void)s; + return (TIFFNoDecode(tif, "strip")); -int -_TIFFNoTileDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) +int _TIFFNoTileDecode(TIFF *tif, uint8_t *pp, tmsize_t cc, uint16_t s) - (void) pp; (void) cc; (void) s; - return (TIFFNoDecode(tif, "tile")); + (void)pp; + (void)cc; + (void)s; + return (TIFFNoDecode(tif, "tile")); -int -_TIFFNoSeek(TIFF* tif, uint32 off) +int _TIFFNoSeek(TIFF *tif, uint32_t off) - (void) off; - TIFFErrorExt(tif->tif_clientdata, tif->tif_name, - "Compression algorithm does not support random access"); - return (0); + (void)off; + TIFFErrorExtR(tif, tif->tif_name, + "Compression algorithm does not support random access"); + return (0); -int -_TIFFNoPreCode(TIFF* tif, uint16 s) +int _TIFFNoPreCode(TIFF *tif, uint16_t s) - (void) tif; (void) s; - return (1); + (void)tif; + (void)s; + return (1); -static int _TIFFtrue(TIFF* tif) { (void) tif; return (1); } -static void _TIFFvoid(TIFF* tif) { (void) tif; } - -void -_TIFFSetDefaultCompressionState(TIFF* tif) +static int _TIFFtrue(TIFF *tif) - tif->tif_fixuptags = _TIFFNoFixupTags; - tif->tif_decodestatus = TRUE; - tif->tif_setupdecode = _TIFFtrue; - tif->tif_predecode = _TIFFNoPreCode; - tif->tif_decoderow = _TIFFNoRowDecode; - tif->tif_decodestrip = _TIFFNoStripDecode; - tif->tif_decodetile = _TIFFNoTileDecode; - tif->tif_encodestatus = TRUE; - tif->tif_setupencode = _TIFFtrue; - tif->tif_preencode = _TIFFNoPreCode; - tif->tif_postencode = _TIFFtrue; - tif->tif_encoderow = _TIFFNoRowEncode; - tif->tif_encodestrip = _TIFFNoStripEncode; - tif->tif_encodetile = _TIFFNoTileEncode; - tif->tif_close = _TIFFvoid; - tif->tif_seek = _TIFFNoSeek; - tif->tif_cleanup = _TIFFvoid; - tif->tif_defstripsize = _TIFFDefaultStripSize; - tif->tif_deftilesize = _TIFFDefaultTileSize; - tif->tif_flags &= ~(TIFF_NOBITREV|TIFF_NOREADRAW); + (void)tif; + return (1); +} +static void _TIFFvoid(TIFF *tif) { (void)tif; } + +void _TIFFSetDefaultCompressionState(TIFF *tif) +{ + tif->tif_fixuptags = _TIFFNoFixupTags; + tif->tif_decodestatus = TRUE; + tif->tif_setupdecode = _TIFFtrue; + tif->tif_predecode = _TIFFNoPreCode; + tif->tif_decoderow = _TIFFNoRowDecode; + tif->tif_decodestrip = _TIFFNoStripDecode; + tif->tif_decodetile = _TIFFNoTileDecode; + tif->tif_encodestatus = TRUE; + tif->tif_setupencode = _TIFFtrue; + tif->tif_preencode = _TIFFNoPreCode; + tif->tif_postencode = _TIFFtrue; + tif->tif_encoderow = _TIFFNoRowEncode; + tif->tif_encodestrip = _TIFFNoStripEncode; + tif->tif_encodetile = _TIFFNoTileEncode; + tif->tif_close = _TIFFvoid; + tif->tif_seek = _TIFFNoSeek; + tif->tif_cleanup = _TIFFvoid; + tif->tif_defstripsize = _TIFFDefaultStripSize; + tif->tif_deftilesize = _TIFFDefaultTileSize; + tif->tif_flags &= ~(TIFF_NOBITREV | TIFF_NOREADRAW); -int -TIFFSetCompressionScheme(TIFF* tif, int scheme) +int TIFFSetCompressionScheme(TIFF *tif, int scheme) - const TIFFCodec *c = TIFFFindCODEC((uint16) scheme); + const TIFFCodec *c = TIFFFindCODEC((uint16_t)scheme); - _TIFFSetDefaultCompressionState(tif); - /* - * Don't treat an unknown compression scheme as an error. - * This permits applications to open files with data that - * the library does not have builtin support for, but which - * may still be meaningful. - */ - return (c ? (*c->init)(tif, scheme) : 1); + _TIFFSetDefaultCompressionState(tif); + /* + * Don't treat an unknown compression scheme as an error. + * This permits applications to open files with data that + * the library does not have builtin support for, but which + * may still be meaningful. + */ + return (c ? (*c->init)(tif, scheme) : 1);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_compress.c
22
23
24
25
26
27
28
29
30
31
* OF THIS SOFTWARE. */ /* * TIFF Library * * Compression Scheme Configuration Support. */ #include "tiffiop.h"
+ show +
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
static int TIFFNoEncode(TIFF* tif, const char* method) { const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); if (c) { TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%s %s encoding is not implemented", c->name, method); } else { TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Compression scheme %u %s encoding is not implemented", tif->tif_dir.td_compression, method); } return (-1); } int _TIFFNoRowEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) { (void) pp; (void) cc; (void) s; return (TIFFNoEncode(tif, "scanline")); } int _TIFFNoStripEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) { (void) pp; (void) cc; (void) s; return (TIFFNoEncode(tif, "strip")); } int _TIFFNoTileEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) { (void) pp; (void) cc; (void) s; return (TIFFNoEncode(tif, "tile")); } static int TIFFNoDecode(TIFF* tif, const char* method) { const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); if (c) TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%s %s decoding is not implemented", c->name, method); else TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Compression scheme %u %s decoding is not implemented", tif->tif_dir.td_compression, method); return (0); } static int _TIFFNoFixupTags(TIFF* tif) { (void) tif; return (1); } int _TIFFNoRowDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) { (void) pp; (void) cc; (void) s; return (TIFFNoDecode(tif, "scanline")); } int _TIFFNoStripDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) { (void) pp; (void) cc; (void) s; return (TIFFNoDecode(tif, "strip")); } int _TIFFNoTileDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) { (void) pp; (void) cc; (void) s; return (TIFFNoDecode(tif, "tile")); } int _TIFFNoSeek(TIFF* tif, uint32 off) { (void) off; TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Compression algorithm does not support random access"); return (0); } int _TIFFNoPreCode(TIFF* tif, uint16 s) { (void) tif; (void) s; return (1); } static int _TIFFtrue(TIFF* tif) { (void) tif; return (1); } static void _TIFFvoid(TIFF* tif) { (void) tif; } void _TIFFSetDefaultCompressionState(TIFF* tif) { tif->tif_fixuptags = _TIFFNoFixupTags; tif->tif_decodestatus = TRUE; tif->tif_setupdecode = _TIFFtrue; tif->tif_predecode = _TIFFNoPreCode; tif->tif_decoderow = _TIFFNoRowDecode; tif->tif_decodestrip = _TIFFNoStripDecode; tif->tif_decodetile = _TIFFNoTileDecode; tif->tif_encodestatus = TRUE; tif->tif_setupencode = _TIFFtrue; tif->tif_preencode = _TIFFNoPreCode; tif->tif_postencode = _TIFFtrue; tif->tif_encoderow = _TIFFNoRowEncode; tif->tif_encodestrip = _TIFFNoStripEncode; tif->tif_encodetile = _TIFFNoTileEncode; tif->tif_close = _TIFFvoid; tif->tif_seek = _TIFFNoSeek; tif->tif_cleanup = _TIFFvoid; tif->tif_defstripsize = _TIFFDefaultStripSize; tif->tif_deftilesize = _TIFFDefaultTileSize; tif->tif_flags &= ~(TIFF_NOBITREV|TIFF_NOREADRAW); } int TIFFSetCompressionScheme(TIFF* tif, int scheme) { const TIFFCodec *c = TIFFFindCODEC((uint16) scheme); _TIFFSetDefaultCompressionState(tif); /* * Don't treat an unknown compression scheme as an error. * This permits applications to open files with data that * the library does not have builtin support for, but which * may still be meaningful. */ return (c ? (*c->init)(tif, scheme) : 1);
+ show +
171
172
173
174
175
176
177
178
179
180
} /* * Other compression schemes may be registered. Registered * schemes can also override the builtin versions provided * by this library. */ typedef struct _codec { struct _codec* next; TIFFCodec* info;

[CVE-2023-40093_1.diff] tif_dir.h #2
-typedef struct { - const TIFFField *info; - int count; - void *value; +typedef struct +{ + const TIFFField *info; + int count; + void *value;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_dir.h
25
26
27
28
29
30
31
32
33
34
#ifndef _TIFFDIR_ #define _TIFFDIR_ #include "tiff.h" #include "tiffio.h" /* * ``Library-private'' Directory-related Definitions. */
+ show +
35
36
37
38
typedef struct { const TIFFField *info; int count; void *value;
+ show +
39
40
41
42
43
44
45
46
47
48
} TIFFTagValue; /* * TIFF Image File Directories are comprised of a table of field * descriptors of the form shown below. The table is sorted in * ascending order by tag. The values associated with each entry are * disjoint and may appear anywhere in the file (so long as they are * placed on a word boundary). * * If the value is 4 bytes or less, in ClassicTIFF, or 8 bytes or less in

[CVE-2023-40093_1.diff] tif_dir.h #4
-#define FIELD_IGNORE 0 +#define FIELD_IGNORE 0 -#define FIELD_IMAGEDIMENSIONS 1 -#define FIELD_TILEDIMENSIONS 2 -#define FIELD_RESOLUTION 3 -#define FIELD_POSITION 4 +#define FIELD_IMAGEDIMENSIONS 1 +#define FIELD_TILEDIMENSIONS 2 +#define FIELD_RESOLUTION 3 +#define FIELD_POSITION 4 -#define FIELD_SUBFILETYPE 5 -#define FIELD_BITSPERSAMPLE 6 -#define FIELD_COMPRESSION 7 -#define FIELD_PHOTOMETRIC 8 -#define FIELD_THRESHHOLDING 9 -#define FIELD_FILLORDER 10 -#define FIELD_ORIENTATION 15 -#define FIELD_SAMPLESPERPIXEL 16 -#define FIELD_ROWSPERSTRIP 17 -#define FIELD_MINSAMPLEVALUE 18 -#define FIELD_MAXSAMPLEVALUE 19 -#define FIELD_PLANARCONFIG 20 -#define FIELD_RESOLUTIONUNIT 22 -#define FIELD_PAGENUMBER 23 -#define FIELD_STRIPBYTECOUNTS 24 -#define FIELD_STRIPOFFSETS 25 -#define FIELD_COLORMAP 26 -#define FIELD_EXTRASAMPLES 31 -#define FIELD_SAMPLEFORMAT 32 -#define FIELD_SMINSAMPLEVALUE 33 -#define FIELD_SMAXSAMPLEVALUE 34 -#define FIELD_IMAGEDEPTH 35 -#define FIELD_TILEDEPTH 36 -#define FIELD_HALFTONEHINTS 37 -#define FIELD_YCBCRSUBSAMPLING 39 -#define FIELD_YCBCRPOSITIONING 40 -#define FIELD_REFBLACKWHITE 41 -#define FIELD_TRANSFERFUNCTION 44 -#define FIELD_INKNAMES 46 -#define FIELD_SUBIFD 49 +#define FIELD_SUBFILETYPE 5 +#define FIELD_BITSPERSAMPLE 6 +#define FIELD_COMPRESSION 7 +#define FIELD_PHOTOMETRIC 8 +#define FIELD_THRESHHOLDING 9 +#define FIELD_FILLORDER 10 +#define FIELD_ORIENTATION 15 +#define FIELD_SAMPLESPERPIXEL 16 +#define FIELD_ROWSPERSTRIP 17 +#define FIELD_MINSAMPLEVALUE 18 +#define FIELD_MAXSAMPLEVALUE 19 +#define FIELD_PLANARCONFIG 20 +#define FIELD_RESOLUTIONUNIT 22 +#define FIELD_PAGENUMBER 23 +#define FIELD_STRIPBYTECOUNTS 24 +#define FIELD_STRIPOFFSETS 25 +#define FIELD_COLORMAP 26 +#define FIELD_EXTRASAMPLES 31 +#define FIELD_SAMPLEFORMAT 32 +#define FIELD_SMINSAMPLEVALUE 33 +#define FIELD_SMAXSAMPLEVALUE 34 +#define FIELD_IMAGEDEPTH 35 +#define FIELD_TILEDEPTH 36 +#define FIELD_HALFTONEHINTS 37 +#define FIELD_YCBCRSUBSAMPLING 39 +#define FIELD_YCBCRPOSITIONING 40 +#define FIELD_REFBLACKWHITE 41 +#define FIELD_TRANSFERFUNCTION 44 +#define FIELD_INKNAMES 46 +#define FIELD_SUBIFD 49 +#define FIELD_NUMBEROFINKS 50 -#define FIELD_CODEC 66 /* base of codec-private tags */ - +#define FIELD_CODEC 66 /* base of codec-private tags */
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_dir.h
128
129
130
131
132
133
134
135
136
137
* Field flags used to indicate fields that have been set in a directory, and * to reference fields when manipulating a directory. */ /* * FIELD_IGNORE is used to signify tags that are to be processed but otherwise * ignored. This permits antiquated tags to be quietly read and discarded. * Note that a bit *is* allocated for ignored tags; this is understood by the * directory reading logic which uses this fact to avoid special-case handling */
+ show +
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#define FIELD_IGNORE 0 /* multi-item fields */ #define FIELD_IMAGEDIMENSIONS 1 #define FIELD_TILEDIMENSIONS 2 #define FIELD_RESOLUTION 3 #define FIELD_POSITION 4 /* single-item fields */ #define FIELD_SUBFILETYPE 5 #define FIELD_BITSPERSAMPLE 6 #define FIELD_COMPRESSION 7 #define FIELD_PHOTOMETRIC 8 #define FIELD_THRESHHOLDING 9 #define FIELD_FILLORDER 10 #define FIELD_ORIENTATION 15 #define FIELD_SAMPLESPERPIXEL 16 #define FIELD_ROWSPERSTRIP 17 #define FIELD_MINSAMPLEVALUE 18 #define FIELD_MAXSAMPLEVALUE 19 #define FIELD_PLANARCONFIG 20 #define FIELD_RESOLUTIONUNIT 22 #define FIELD_PAGENUMBER 23 #define FIELD_STRIPBYTECOUNTS 24 #define FIELD_STRIPOFFSETS 25 #define FIELD_COLORMAP 26 #define FIELD_EXTRASAMPLES 31 #define FIELD_SAMPLEFORMAT 32 #define FIELD_SMINSAMPLEVALUE 33 #define FIELD_SMAXSAMPLEVALUE 34 #define FIELD_IMAGEDEPTH 35 #define FIELD_TILEDEPTH 36 #define FIELD_HALFTONEHINTS 37 #define FIELD_YCBCRSUBSAMPLING 39 #define FIELD_YCBCRPOSITIONING 40 #define FIELD_REFBLACKWHITE 41 #define FIELD_TRANSFERFUNCTION 44 #define FIELD_INKNAMES 46 #define FIELD_SUBIFD 49 /* FIELD_CUSTOM (see tiffio.h) 65 */ /* end of support for well-known tags; codec-private tags follow */ #define FIELD_CODEC 66 /* base of codec-private tags */
+ show +
180
181
182
183
184
185
186
187
188
189
/* * Pseudo-tags don't normally need field bits since they are not written to an * output file (by definition). The library also has express logic to always * query a codec for a pseudo-tag so allocating a field bit for one is a * waste. If codec wants to promote the notion of a pseudo-tag being ``set'' * or ``unset'' then it can do using internal state flags without polluting * the field bit space defined for real tags. */

[CVE-2023-40093_1.diff] tif_write.c #3
-tmsize_t -TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc) +tmsize_t TIFFWriteRawStrip(TIFF *tif, uint32_t strip, void *data, tmsize_t cc) - static const char module[] = "TIFFWriteRawStrip"; - TIFFDirectory *td = &tif->tif_dir; + static const char module[] = "TIFFWriteRawStrip"; + TIFFDirectory *td = &tif->tif_dir; - if (!WRITECHECKSTRIPS(tif, module)) - return ((tmsize_t) -1); - /* - * Check strip array to make sure there's space. - * We don't support dynamically growing files that - * have data organized in separate bitplanes because - * it's too painful. In that case we require that - * the imagelength be set properly before the first - * write (so that the strips array will be fully - * allocated above). - */ - if (strip >= td->td_nstrips) { - if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { - TIFFErrorExt(tif->tif_clientdata, module, - "Can not grow image by strips when using separate planes"); - return ((tmsize_t) -1); - } - /* - * Watch out for a growing image. The value of - * strips/image will initially be 1 (since it - * can't be deduced until the imagelength is known). - */ - if (strip >= td->td_stripsperimage) - td->td_stripsperimage = - TIFFhowmany_32(td->td_imagelength,td->td_rowsperstrip); - if (!TIFFGrowStrips(tif, 1, module)) - return ((tmsize_t) -1); - } - tif->tif_curstrip = strip; - if (td->td_stripsperimage == 0) { - TIFFErrorExt(tif->tif_clientdata, module,"Zero strips per image"); - return ((tmsize_t) -1); + if (!WRITECHECKSTRIPS(tif, module)) + return ((tmsize_t)-1); + /* + * Check strip array to make sure there's space. + * We don't support dynamically growing files that + * have data organized in separate bitplanes because + * it's too painful. In that case we require that + * the imagelength be set properly before the first + * write (so that the strips array will be fully + * allocated above). + */ + if (strip >= td->td_nstrips) + { + if (td->td_planarconfig == PLANARCONFIG_SEPARATE) + { + TIFFErrorExtR( + tif, module, + "Can not grow image by strips when using separate planes"); + return ((tmsize_t)-1); - tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip; - return (TIFFAppendToStrip(tif, strip, (uint8*) data, cc) ? - cc : (tmsize_t) -1); + /* + * Watch out for a growing image. The value of + * strips/image will initially be 1 (since it + * can't be deduced until the imagelength is known). + */ + if (strip >= td->td_stripsperimage) + td->td_stripsperimage = + TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip); + if (!TIFFGrowStrips(tif, 1, module)) + return ((tmsize_t)-1); + } + + if (tif->tif_curstrip != strip) + { + tif->tif_curstrip = strip; + + /* this informs TIFFAppendToStrip() we have changed or reset strip */ + tif->tif_curoff = 0; + } + + if (td->td_stripsperimage == 0) + { + TIFFErrorExtR(tif, module, "Zero strips per image"); + return ((tmsize_t)-1); + } + tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip; + return (TIFFAppendToStrip(tif, strip, (uint8_t *)data, cc) ? cc + : (tmsize_t)-1); -tmsize_t -TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s) +tmsize_t TIFFWriteTile(TIFF *tif, void *buf, uint32_t x, uint32_t y, uint32_t z, + uint16_t s) - if (!TIFFCheckTile(tif, x, y, z, s)) - return ((tmsize_t)(-1)); - /* - * NB: A tile size of -1 is used instead of tif_tilesize knowing - * that TIFFWriteEncodedTile will clamp this to the tile size. - * This is done because the tile size may not be defined until - * after the output buffer is setup in TIFFWriteBufferSetup. - */ - return (TIFFWriteEncodedTile(tif, - TIFFComputeTile(tif, x, y, z, s), buf, (tmsize_t)(-1))); + if (!TIFFCheckTile(tif, x, y, z, s)) + return ((tmsize_t)(-1)); + /* + * NB: A tile size of -1 is used instead of tif_tilesize knowing + * that TIFFWriteEncodedTile will clamp this to the tile size. + * This is done because the tile size may not be defined until + * after the output buffer is setup in TIFFWriteBufferSetup. + */ + return (TIFFWriteEncodedTile(tif, TIFFComputeTile(tif, x, y, z, s), buf, + (tmsize_t)(-1)));
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_write.c
305
306
307
308
309
310
311
312
313
314
tif->tif_rawcc = 0; tif->tif_rawcp = tif->tif_rawdata; return (cc); } /* * Write the supplied data to the specified strip. * * NB: Image length must be setup before writing. */
+ show +
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
tmsize_t TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc) { static const char module[] = "TIFFWriteRawStrip"; TIFFDirectory *td = &tif->tif_dir; if (!WRITECHECKSTRIPS(tif, module)) return ((tmsize_t) -1); /* * Check strip array to make sure there's space. * We don't support dynamically growing files that * have data organized in separate bitplanes because * it's too painful. In that case we require that * the imagelength be set properly before the first * write (so that the strips array will be fully * allocated above). */ if (strip >= td->td_nstrips) { if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { TIFFErrorExt(tif->tif_clientdata, module, "Can not grow image by strips when using separate planes"); return ((tmsize_t) -1); } /* * Watch out for a growing image. The value of * strips/image will initially be 1 (since it * can't be deduced until the imagelength is known). */ if (strip >= td->td_stripsperimage) td->td_stripsperimage = TIFFhowmany_32(td->td_imagelength,td->td_rowsperstrip); if (!TIFFGrowStrips(tif, 1, module)) return ((tmsize_t) -1); } tif->tif_curstrip = strip; if (td->td_stripsperimage == 0) { TIFFErrorExt(tif->tif_clientdata, module,"Zero strips per image"); return ((tmsize_t) -1); } tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip; return (TIFFAppendToStrip(tif, strip, (uint8*) data, cc) ? cc : (tmsize_t) -1); } /* * Write and compress a tile of data. The * tile is selected by the (x,y,z,s) coordinates. */ tmsize_t TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s) { if (!TIFFCheckTile(tif, x, y, z, s)) return ((tmsize_t)(-1)); /* * NB: A tile size of -1 is used instead of tif_tilesize knowing * that TIFFWriteEncodedTile will clamp this to the tile size. * This is done because the tile size may not be defined until * after the output buffer is setup in TIFFWriteBufferSetup. */ return (TIFFWriteEncodedTile(tif, TIFFComputeTile(tif, x, y, z, s), buf, (tmsize_t)(-1)));
+ show +
376
377
378
379
380
381
382
383
384
385
} /* * Encode the supplied data and write it to the * specified tile. There must be space for the * data. The function clamps individual writes * to a tile to the tile size, but does not (and * can not) check that multiple writes to the same * tile do not write more than tile size data. *

[CVE-2023-40093_1.diff] tif_write.c #5
-tmsize_t -TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc) +tmsize_t TIFFWriteRawTile(TIFF *tif, uint32_t tile, void *data, tmsize_t cc) - static const char module[] = "TIFFWriteRawTile"; + static const char module[] = "TIFFWriteRawTile"; - if (!WRITECHECKTILES(tif, module)) - return ((tmsize_t)(-1)); - if (tile >= tif->tif_dir.td_nstrips) { - TIFFErrorExt(tif->tif_clientdata, module, "Tile %lu out of range, max %lu", - (unsigned long) tile, - (unsigned long) tif->tif_dir.td_nstrips); - return ((tmsize_t)(-1)); - } - return (TIFFAppendToStrip(tif, tile, (uint8*) data, cc) ? - cc : (tmsize_t)(-1)); + if (!WRITECHECKTILES(tif, module)) + return ((tmsize_t)(-1)); + if (tile >= tif->tif_dir.td_nstrips) + { + TIFFErrorExtR(tif, module, "Tile %lu out of range, max %lu", + (unsigned long)tile, + (unsigned long)tif->tif_dir.td_nstrips); + return ((tmsize_t)(-1)); + } + return (TIFFAppendToStrip(tif, tile, (uint8_t *)data, cc) ? cc + : (tmsize_t)(-1)); -#define isUnspecified(tif, f) \ - (TIFFFieldSet(tif,f) && (tif)->tif_dir.td_imagelength == 0) +#define isUnspecified(tif, f) \ + (TIFFFieldSet(tif, f) && (tif)->tif_dir.td_imagelength == 0) -int -TIFFSetupStrips(TIFF* tif) +int TIFFSetupStrips(TIFF *tif) - TIFFDirectory* td = &tif->tif_dir; + TIFFDirectory *td = &tif->tif_dir; - if (isTiled(tif)) - td->td_stripsperimage = - isUnspecified(tif, FIELD_TILEDIMENSIONS) ? - td->td_samplesperpixel : TIFFNumberOfTiles(tif); - else - td->td_stripsperimage = - isUnspecified(tif, FIELD_ROWSPERSTRIP) ? - td->td_samplesperpixel : TIFFNumberOfStrips(tif); - td->td_nstrips = td->td_stripsperimage; - if (td->td_planarconfig == PLANARCONFIG_SEPARATE) - td->td_stripsperimage /= td->td_samplesperpixel; - td->td_stripoffset_p = (uint64 *) - _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64), - "for \"StripOffsets\" array"); - td->td_stripbytecount_p = (uint64 *) - _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64), - "for \"StripByteCounts\" array"); - if (td->td_stripoffset_p == NULL || td->td_stripbytecount_p == NULL) - return (0); - /* - * Place data at the end-of-file - * (by setting offsets to zero). - */ - _TIFFmemset(td->td_stripoffset_p, 0, td->td_nstrips*sizeof (uint64)); - _TIFFmemset(td->td_stripbytecount_p, 0, td->td_nstrips*sizeof (uint64)); - TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS); - TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS); - return (1); + if (isTiled(tif)) + td->td_stripsperimage = isUnspecified(tif, FIELD_TILEDIMENSIONS) + ? td->td_samplesperpixel + : TIFFNumberOfTiles(tif); + else + td->td_stripsperimage = isUnspecified(tif, FIELD_ROWSPERSTRIP) + ? td->td_samplesperpixel + : TIFFNumberOfStrips(tif); + td->td_nstrips = td->td_stripsperimage; + /* TIFFWriteDirectoryTagData has a limitation to 0x80000000U bytes */ + if (td->td_nstrips >= + 0x80000000U / ((tif->tif_flags & TIFF_BIGTIFF) ? 0x8U : 0x4U)) + { + TIFFErrorExtR(tif, "TIFFSetupStrips", + "Too large Strip/Tile Offsets/ByteCounts arrays"); + return 0; + } + if (td->td_planarconfig == PLANARCONFIG_SEPARATE) + td->td_stripsperimage /= td->td_samplesperpixel; + td->td_stripoffset_p = (uint64_t *)_TIFFCheckMalloc( + tif, td->td_nstrips, sizeof(uint64_t), "for \"StripOffsets\" array"); + td->td_stripbytecount_p = (uint64_t *)_TIFFCheckMalloc( + tif, td->td_nstrips, sizeof(uint64_t), "for \"StripByteCounts\" array"); + if (td->td_stripoffset_p == NULL || td->td_stripbytecount_p == NULL) + return (0); + /* + * Place data at the end-of-file + * (by setting offsets to zero). + */ + _TIFFmemset(td->td_stripoffset_p, 0, td->td_nstrips * sizeof(uint64_t)); + _TIFFmemset(td->td_stripbytecount_p, 0, td->td_nstrips * sizeof(uint64_t)); + TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS); + TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS); + return (1);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_write.c
492
493
494
495
496
497
498
499
500
501
/* * Write the supplied data to the specified strip. * There must be space for the data; we don't check * if strips overlap! * * NB: Image length must be setup before writing; this * interface does not support automatically growing * the image on each write (as TIFFWriteScanline does). */
+ show +
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
tmsize_t TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc) { static const char module[] = "TIFFWriteRawTile"; if (!WRITECHECKTILES(tif, module)) return ((tmsize_t)(-1)); if (tile >= tif->tif_dir.td_nstrips) { TIFFErrorExt(tif->tif_clientdata, module, "Tile %lu out of range, max %lu", (unsigned long) tile, (unsigned long) tif->tif_dir.td_nstrips); return ((tmsize_t)(-1)); } return (TIFFAppendToStrip(tif, tile, (uint8*) data, cc) ? cc : (tmsize_t)(-1)); } #define isUnspecified(tif, f) \ (TIFFFieldSet(tif,f) && (tif)->tif_dir.td_imagelength == 0) int TIFFSetupStrips(TIFF* tif) { TIFFDirectory* td = &tif->tif_dir; if (isTiled(tif)) td->td_stripsperimage = isUnspecified(tif, FIELD_TILEDIMENSIONS) ? td->td_samplesperpixel : TIFFNumberOfTiles(tif); else td->td_stripsperimage = isUnspecified(tif, FIELD_ROWSPERSTRIP) ? td->td_samplesperpixel : TIFFNumberOfStrips(tif); td->td_nstrips = td->td_stripsperimage; if (td->td_planarconfig == PLANARCONFIG_SEPARATE) td->td_stripsperimage /= td->td_samplesperpixel; td->td_stripoffset_p = (uint64 *) _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64), "for \"StripOffsets\" array"); td->td_stripbytecount_p = (uint64 *) _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64), "for \"StripByteCounts\" array"); if (td->td_stripoffset_p == NULL || td->td_stripbytecount_p == NULL) return (0); /* * Place data at the end-of-file * (by setting offsets to zero). */ _TIFFmemset(td->td_stripoffset_p, 0, td->td_nstrips*sizeof (uint64)); _TIFFmemset(td->td_stripbytecount_p, 0, td->td_nstrips*sizeof (uint64)); TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS); TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS); return (1);
+ show +
555
556
557
558
559
560
561
562
563
564
} #undef isUnspecified /* * Verify file is writable and that the directory * information is setup properly. In doing the latter * we also "freeze" the state of the directory so * that important information is not changed. */ int

[CVE-2023-40093_1.diff] tif_jpeg.c #2
-int TIFFFillStrip(TIFF* tif, uint32 strip); -int TIFFFillTile(TIFF* tif, uint32 tile); -int TIFFReInitJPEG_12( TIFF *tif, int scheme, int is_encode ); -int TIFFJPEGIsFullStripRequired_12(TIFF* tif); +/* Settings that are independent of libjpeg ABI. Used when reinitializing the */ +/* JPEGState from libjpegs 8 bit to libjpeg 12 bits, which have potentially */ +/* different ABI */ +typedef struct +{ + TIFFVGetMethod vgetparent; /* super-class method */ + TIFFVSetMethod vsetparent; /* super-class method */ + TIFFPrintMethod printdir; /* super-class method */ + TIFFStripMethod defsparent; /* super-class method */ + TIFFTileMethod deftparent; /* super-class method */ + + /* pseudo-tag fields */ + void *jpegtables; /* JPEGTables tag value, or NULL */ + uint32_t jpegtables_length; /* number of bytes in same */ + int jpegquality; /* Compression quality level */ + int jpegcolormode; /* Auto RGB<=>YCbCr convert? */ + int jpegtablesmode; /* What to put in JPEGTables */ + + int ycbcrsampling_fetched; + int max_allowed_scan_number; + int has_warned_about_progressive_mode; +} JPEGOtherSettings; + +int TIFFFillStrip(TIFF *tif, uint32_t strip); +int TIFFFillTile(TIFF *tif, uint32_t tile); +int TIFFReInitJPEG_12(TIFF *tif, const JPEGOtherSettings *otherSettings, + int scheme, int is_encode); +int TIFFJPEGIsFullStripRequired_12(TIFF *tif);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_jpeg.c
37
38
39
40
41
42
43
44
45
46
* (*not* per the original TIFF 6.0 spec). * * This file is simply an interface to the libjpeg library written by * the Independent JPEG Group. You need release 5 or later of the IJG * code, which you can find on the Internet at ftp.uu.net:/graphics/jpeg/. * * Contributed by Tom Lane <tgl@sss.pgh.pa.us>. */ #include <setjmp.h>
+ show +
47
48
49
50
int TIFFFillStrip(TIFF* tif, uint32 strip); int TIFFFillTile(TIFF* tif, uint32 tile); int TIFFReInitJPEG_12( TIFF *tif, int scheme, int is_encode ); int TIFFJPEGIsFullStripRequired_12(TIFF* tif);
+ show +
51
52
53
54
55
56
57
58
59
60
/* We undefine FAR to avoid conflict with JPEG definition */ #ifdef FAR #undef FAR #endif /* Libjpeg's jmorecfg.h defines INT16 and INT32, but only if XMD_H is not defined. Unfortunately, the MinGW and Borland compilers include

[CVE-2023-40093_1.diff] tif_jpeg.c #8
-static void -TIFFjpeg_error_exit(j_common_ptr cinfo) +static void TIFFjpeg_error_exit(j_common_ptr cinfo) - JPEGState *sp = (JPEGState *) cinfo; /* NB: cinfo assumed first */ - char buffer[JMSG_LENGTH_MAX]; + JPEGState *sp = (JPEGState *)cinfo; /* NB: cinfo assumed first */ + char buffer[JMSG_LENGTH_MAX]; - (*cinfo->err->format_message) (cinfo, buffer); - TIFFErrorExt(sp->tif->tif_clientdata, "JPEGLib", "%s", buffer); /* display the error message */ - jpeg_abort(cinfo); /* clean up libjpeg state */ - LONGJMP(sp->exit_jmpbuf, 1); /* return to libtiff caller */ + (*cinfo->err->format_message)(cinfo, buffer); + TIFFErrorExtR(sp->tif, "JPEGLib", "%s", + buffer); /* display the error message */ + jpeg_abort(cinfo); /* clean up libjpeg state */ + LONGJMP(sp->exit_jmpbuf, 1); /* return to libtiff caller */
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_jpeg.c
214
215
216
217
218
219
220
221
222
223
* when a fatal error is encountered within the JPEG * library. We also direct libjpeg error and warning * messages through the appropriate libtiff handlers. */ /* * Error handling routines (these replace corresponding * IJG routines from jerror.c). These are used for both * compression and decompression. */
+ show +
224
225
226
227
228
229
230
231
232
233
static void TIFFjpeg_error_exit(j_common_ptr cinfo) { JPEGState *sp = (JPEGState *) cinfo; /* NB: cinfo assumed first */ char buffer[JMSG_LENGTH_MAX]; (*cinfo->err->format_message) (cinfo, buffer); TIFFErrorExt(sp->tif->tif_clientdata, "JPEGLib", "%s", buffer); /* display the error message */ jpeg_abort(cinfo); /* clean up libjpeg state */ LONGJMP(sp->exit_jmpbuf, 1); /* return to libtiff caller */
+ show +
234
235
236
237
238
239
240
241
242
243
} /* * This routine is invoked only for warning messages, * since error_exit does its own thing and trace_level * is never set > 0. */ static void TIFFjpeg_output_message(j_common_ptr cinfo) {

[CVE-2023-40093_1.diff] tif_jpeg.c #12
-static void -tables_init_source(j_decompress_ptr cinfo) +static void tables_init_source(j_decompress_ptr cinfo) - JPEGState* sp = (JPEGState*) cinfo; + JPEGState *sp = (JPEGState *)cinfo; - sp->src.next_input_byte = (const JOCTET*) sp->jpegtables; - sp->src.bytes_in_buffer = (size_t) sp->jpegtables_length; + sp->src.next_input_byte = (const JOCTET *)sp->otherSettings.jpegtables; + sp->src.bytes_in_buffer = (size_t)sp->otherSettings.jpegtables_length; -static void -TIFFjpeg_tables_src(JPEGState* sp) +static void TIFFjpeg_tables_src(JPEGState *sp) - TIFFjpeg_data_src(sp); - sp->src.init_source = tables_init_source; + TIFFjpeg_data_src(sp); + sp->src.init_source = tables_init_source;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_jpeg.c
653
654
655
656
657
658
659
660
661
662
sp->src.term_source = std_term_source; sp->src.bytes_in_buffer = 0; /* for safety */ sp->src.next_input_byte = NULL; } /* * Alternate source manager for reading from JPEGTables. * We can share all the code except for the init routine. */
+ show +
663
664
665
666
667
668
669
670
671
672
673
674
675
676
static void tables_init_source(j_decompress_ptr cinfo) { JPEGState* sp = (JPEGState*) cinfo; sp->src.next_input_byte = (const JOCTET*) sp->jpegtables; sp->src.bytes_in_buffer = (size_t) sp->jpegtables_length; } static void TIFFjpeg_tables_src(JPEGState* sp) { TIFFjpeg_data_src(sp); sp->src.init_source = tables_init_source;
+ show +
677
678
679
680
681
682
683
684
685
686
} /* * Allocate downsampled-data buffers needed for downsampled I/O. * We use values computed in jpeg_start_compress or jpeg_start_decompress. * We use libjpeg's allocator so that buffers will be released automatically * when done with strip/tile. * This is also a handy place to compute samplesperclump, bytesperline. */ static int

[CVE-2023-40093_1.diff] tif_jpeg.c #13
-static int -alloc_downsampled_buffers(TIFF* tif, jpeg_component_info* comp_info, - int num_components) +static int alloc_downsampled_buffers(TIFF *tif, jpeg_component_info *comp_info, + int num_components) - JPEGState* sp = JState(tif); - int ci; - jpeg_component_info* compptr; - JSAMPARRAY buf; - int samples_per_clump = 0; + JPEGState *sp = JState(tif); + int ci; + jpeg_component_info *compptr; + TIFF_JSAMPARRAY buf; + int samples_per_clump = 0; - for (ci = 0, compptr = comp_info; ci < num_components; - ci++, compptr++) { - samples_per_clump += compptr->h_samp_factor * - compptr->v_samp_factor; - buf = TIFFjpeg_alloc_sarray(sp, JPOOL_IMAGE, - compptr->width_in_blocks * DCTSIZE, - (JDIMENSION) (compptr->v_samp_factor*DCTSIZE)); - if (buf == NULL) - return (0); - sp->ds_buffer[ci] = buf; - } - sp->samplesperclump = samples_per_clump; - return (1); + for (ci = 0, compptr = comp_info; ci < num_components; ci++, compptr++) + { + samples_per_clump += compptr->h_samp_factor * compptr->v_samp_factor; + buf = (TIFF_JSAMPARRAY)TIFFjpeg_alloc_sarray( + sp, JPOOL_IMAGE, compptr->width_in_blocks * DCTSIZE, + (JDIMENSION)(compptr->v_samp_factor * DCTSIZE)); + if (buf == NULL) + return (0); + sp->ds_buffer[ci] = buf; + } + sp->samplesperclump = samples_per_clump; + return (1); -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_jpeg.c
676
677
678
679
680
681
682
683
684
685
sp->src.init_source = tables_init_source; } /* * Allocate downsampled-data buffers needed for downsampled I/O. * We use values computed in jpeg_start_compress or jpeg_start_decompress. * We use libjpeg's allocator so that buffers will be released automatically * when done with strip/tile. * This is also a handy place to compute samplesperclump, bytesperline. */
+ show +
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
static int alloc_downsampled_buffers(TIFF* tif, jpeg_component_info* comp_info, int num_components) { JPEGState* sp = JState(tif); int ci; jpeg_component_info* compptr; JSAMPARRAY buf; int samples_per_clump = 0; for (ci = 0, compptr = comp_info; ci < num_components; ci++, compptr++) { samples_per_clump += compptr->h_samp_factor * compptr->v_samp_factor; buf = TIFFjpeg_alloc_sarray(sp, JPOOL_IMAGE, compptr->width_in_blocks * DCTSIZE, (JDIMENSION) (compptr->v_samp_factor*DCTSIZE)); if (buf == NULL) return (0); sp->ds_buffer[ci] = buf; } sp->samplesperclump = samples_per_clump; return (1);
+ show +
709
710
711
712
713
714
715
716
717
718
} /* * JPEG Decoding. */ #ifdef CHECK_JPEG_YCBCR_SUBSAMPLING #define JPEG_MARKER_SOF0 0xC0

[CVE-2023-40093_1.diff] tif_jpeg.c #19
-static int JPEGInitializeLibJPEG( TIFF * tif, int decompress ) +static int JPEGInitializeLibJPEG(TIFF *tif, int decompress) - JPEGState* sp = JState(tif); + JPEGState *sp = JState(tif); - if(sp->cinfo_initialized) + if (sp->cinfo_initialized) - if( !decompress && sp->cinfo.comm.is_decompressor ) - TIFFjpeg_destroy( sp ); - else if( decompress && !sp->cinfo.comm.is_decompressor ) - TIFFjpeg_destroy( sp ); + if (!decompress && sp->cinfo.comm.is_decompressor) + TIFFjpeg_destroy(sp); + else if (decompress && !sp->cinfo.comm.is_decompressor) + TIFFjpeg_destroy(sp);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_jpeg.c
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
* or decompressor that occurs after the reading of the directory. * * In an ideal world compressors or decompressors would be setup * at the point where a single tile or strip was accessed (for read or write) * so that stuff like update of missing tiles, or replacement of tiles could * be done. However, we aren't trying to crack that nut just yet ... * * NFW, Feb 3rd, 2003. */
+ show +
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
static int JPEGInitializeLibJPEG( TIFF * tif, int decompress ) { JPEGState* sp = JState(tif); if(sp->cinfo_initialized) { if( !decompress && sp->cinfo.comm.is_decompressor ) TIFFjpeg_destroy( sp ); else if( decompress && !sp->cinfo.comm.is_decompressor ) TIFFjpeg_destroy( sp );
+ show +
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
else return 1; sp->cinfo_initialized = 0; } /* * Initialize libjpeg. */ if ( decompress ) {

[CVE-2023-40093_1.diff] tif_codec.c #5
-int -TIFFIsCODECConfigured(uint16 scheme) +int TIFFIsCODECConfigured(uint16_t scheme) - const TIFFCodec* codec = TIFFFindCODEC(scheme); + const TIFFCodec *codec = TIFFFindCODEC(scheme); - if(codec == NULL) { - return 0; - } - if(codec->init == NULL) { - return 0; - } - if(codec->init != NotConfigured){ - return 1; - } - return 0; + if (codec == NULL) + { + return 0; + } + if (codec->init == NULL) + { + return 0; + } + if (codec->init != NotConfigured) + { + return 1; + } + return 0; - -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libtiff/tif_codec.c
138
139
140
141
142
143
144
145
146
147
/* TIFFIsCODECConfigured() */ /************************************************************************/ /** * Check whether we have working codec for the specific coding scheme. * * @return returns 1 if the codec is configured and working. Otherwise * 0 will be returned. */
+ show +
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
int TIFFIsCODECConfigured(uint16 scheme) { const TIFFCodec* codec = TIFFFindCODEC(scheme); if(codec == NULL) { return 0; } if(codec->init == NULL) { return 0; } if(codec->init != NotConfigured){ return 1; } return 0;
+ show +
163
164
165
166
167
168
169
170
171
} /* * Local Variables: * mode: c * c-basic-offset: 8 * fill-column: 78 * End: */

[CVE-2023-40093_1.diff] span.h #7
- return data_.Get()[index]; + return static_cast<T*>(data_)[index]; - constexpr T* data() const noexcept { return data_.Get(); } + + constexpr T& front() const noexcept { + CHECK(!empty()); + return *data(); + } + + constexpr T& back() const noexcept { + CHECK(!empty()); + return *(data() + size() - 1); + } + + constexpr T* data() const noexcept { return static_cast<T*>(data_); } - constexpr iterator begin() const noexcept { return data_.Get(); } - constexpr iterator end() const noexcept { return data_.Get() + size_; } + constexpr iterator begin() const noexcept { return static_cast<T*>(data_); } + constexpr iterator end() const noexcept { return begin() + size_; }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/base/span.h
238
239
240
241
242
243
244
245
246
247
} // [span.obs], span observers constexpr size_t size() const noexcept { return size_; } constexpr size_t size_bytes() const noexcept { return size() * sizeof(T); } constexpr bool empty() const noexcept { return size_ == 0; } // [span.elem], span element access T& operator[](size_t index) const noexcept { CHECK(index < size_);
+ show +
248
249
250
251
252
253
254
return data_.Get()[index]; } constexpr T* data() const noexcept { return data_.Get(); } // [span.iter], span iterator support constexpr iterator begin() const noexcept { return data_.Get(); } constexpr iterator end() const noexcept { return data_.Get() + size_; }
+ show +
255
256
257
258
259
260
261
262
263
264
constexpr const_iterator cbegin() const noexcept { return begin(); } constexpr const_iterator cend() const noexcept { return end(); } constexpr reverse_iterator rbegin() const noexcept { return reverse_iterator(end()); } constexpr reverse_iterator rend() const noexcept { return reverse_iterator(begin()); }

[CVE-2023-40093_1.diff] template_util.h #2
-// Implementation detail of base::void_t below. -template <typename...> -struct make_void { - using type = void; -}; - -} // namespace internal - -// base::void_t is an implementation of std::void_t from C++17. -// -// We use |base::internal::make_void| as a helper struct to avoid a C++14 -// defect: -// http://en.cppreference.com/w/cpp/types/void_t -// http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1558 -template <typename... Ts> -using void_t = typename ::base::internal::make_void<Ts...>::type; - -namespace internal { -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/base/template_util.h
38
39
40
41
42
43
44
45
46
47
namespace base { template <class T> struct is_non_const_reference : std::false_type {}; template <class T> struct is_non_const_reference<T&> : std::true_type {}; template <class T> struct is_non_const_reference<const T&> : std::false_type {}; namespace internal { // Implementation detail of base::void_t below.
+ show +
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
template <typename...> struct make_void { using type = void; }; } // namespace internal // base::void_t is an implementation of std::void_t from C++17. // // We use |base::internal::make_void| as a helper struct to avoid a C++14 // defect: // http://en.cppreference.com/w/cpp/types/void_t // http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1558 template <typename... Ts> using void_t = typename ::base::internal::make_void<Ts...>::type; namespace internal {
+ show +
65
66
67
68
69
70
71
72
73
74
// Uses expression SFINAE to detect whether using operator<< would work. template <typename T, typename = void> struct SupportsOstreamOperator : std::false_type {}; template <typename T> struct SupportsOstreamOperator<T, decltype(void(std::declval<std::ostream&>() << std::declval<T>()))> : std::true_type {};
/media/esteban/ACOS/dotOS/external/libchrome/base/template_util.h
38
39
40
41
42
43
44
45
46
47
namespace base { template <class T> struct is_non_const_reference : std::false_type {}; template <class T> struct is_non_const_reference<T&> : std::true_type {}; template <class T> struct is_non_const_reference<const T&> : std::false_type {}; namespace internal { // Implementation detail of base::void_t below.
+ show +
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
template <typename...> struct make_void { using type = void; }; } // namespace internal // base::void_t is an implementation of std::void_t from C++17. // // We use |base::internal::make_void| as a helper struct to avoid a C++14 // defect: // http://en.cppreference.com/w/cpp/types/void_t // http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1558 template <typename... Ts> using void_t = typename ::base::internal::make_void<Ts...>::type; namespace internal {
+ show +
65
66
67
68
69
70
71
72
73
74
// Uses expression SFINAE to detect whether using operator<< would work. template <typename T, typename = void> struct SupportsOstreamOperator : std::false_type {}; template <typename T> struct SupportsOstreamOperator<T, decltype(void(std::declval<std::ostream&>() << std::declval<T>()))> : std::true_type {};

[CVE-2023-40093_1.diff] safe_conversions.h #14
-// Convience wrapper returns a StrictNumeric from the provided arithmetic type. +// Convenience wrapper returns a StrictNumeric from the provided arithmetic +// type. -// Overload the ostream output operator to make logging work nicely. -template <typename T> -std::ostream& operator<<(std::ostream& os, const StrictNumeric<T>& value) { - os << static_cast<T>(value); - return os; -} -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/base/numerics/safe_conversions.h
303
304
305
306
307
308
309
310
311
312
}; // Convience wrapper returns a StrictNumeric from the provided arithmetic type. template <typename T> constexpr StrictNumeric<typename UnderlyingType<T>::type> MakeStrictNum( const T value) { return value; } // Overload the ostream output operator to make logging work nicely.
+ show +
313
314
315
316
template <typename T> std::ostream& operator<<(std::ostream& os, const StrictNumeric<T>& value) { os << static_cast<T>(value); return os;
+ show +
317
318
319
320
321
322
323
324
325
326
} #define BASE_NUMERIC_COMPARISON_OPERATORS(CLASS, NAME, OP) \ template <typename L, typename R, \ typename std::enable_if< \ internal::Is##CLASS##Op<L, R>::value>::type* = nullptr> \ constexpr bool operator OP(const L lhs, const R rhs) { \ return SafeCompare<NAME, typename UnderlyingType<L>::type, \ typename UnderlyingType<R>::type>(lhs, rhs); \ }
/media/esteban/ACOS/dotOS/external/libchrome/base/numerics/safe_conversions.h
293
294
295
296
297
298
299
300
301
302
}; // Convience wrapper returns a StrictNumeric from the provided arithmetic type. template <typename T> constexpr StrictNumeric<typename UnderlyingType<T>::type> MakeStrictNum( const T value) { return value; } // Overload the ostream output operator to make logging work nicely.
+ show +
303
304
305
306
template <typename T> std::ostream& operator<<(std::ostream& os, const StrictNumeric<T>& value) { os << static_cast<T>(value); return os;
+ show +
307
308
309
310
311
312
313
314
315
316
} #define BASE_NUMERIC_COMPARISON_OPERATORS(CLASS, NAME, OP) \ template <typename L, typename R, \ typename std::enable_if< \ internal::Is##CLASS##Op<L, R>::value>::type* = nullptr> \ constexpr bool operator OP(const L lhs, const R rhs) { \ return SafeCompare<NAME, typename UnderlyingType<L>::type, \ typename UnderlyingType<R>::type>(lhs, rhs); \ }

[CVE-2023-40093_1.diff] safe_conversions.h #15
-using internal::strict_cast; -using internal::saturated_cast; -using internal::SafeUnsignedAbs; -using internal::StrictNumeric; -using internal::MakeStrictNum; -using internal::IsValueInRangeForNumericType; +using internal::IsValueInRangeForNumericType; +using internal::MakeStrictNum; +using internal::SafeUnsignedAbs; +using internal::saturated_cast; +using internal::strict_cast; +using internal::StrictNumeric; +// floating -> integral conversions that saturate and thus can actually return +// an integral type. In most cases, these should be preferred over the std:: +// versions. +template <typename Dst = int, + typename Src, + typename = std::enable_if_t<std::is_integral<Dst>::value && + std::is_floating_point<Src>::value>> +Dst ClampFloor(Src value) { + return saturated_cast<Dst>(std::floor(value)); +} +template <typename Dst = int, + typename Src, + typename = std::enable_if_t<std::is_integral<Dst>::value && + std::is_floating_point<Src>::value>> +Dst ClampCeil(Src value) { + return saturated_cast<Dst>(std::ceil(value)); +} +template <typename Dst = int, + typename Src, + typename = std::enable_if_t<std::is_integral<Dst>::value && + std::is_floating_point<Src>::value>> +Dst ClampRound(Src value) { + const Src rounded = + (value >= 0.0f) ? std::floor(value + 0.5f) : std::ceil(value - 0.5f); + return saturated_cast<Dst>(rounded); +} +
/media/esteban/ACOS/dotOS/external/pdfium/third_party/base/numerics/safe_conversions.h
330
331
332
333
334
335
336
337
338
339
BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsGreater, >) BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsGreaterOrEqual, >=) BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsEqual, ==) BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsNotEqual, !=) } // namespace internal using internal::as_signed; using internal::as_unsigned; using internal::checked_cast;
+ show +
340
341
342
343
344
345
using internal::strict_cast; using internal::saturated_cast; using internal::SafeUnsignedAbs; using internal::StrictNumeric; using internal::MakeStrictNum; using internal::IsValueInRangeForNumericType;
+ show +
346
347
348
349
350
351
352
353
354
355
using internal::IsTypeInRangeForNumericType; using internal::IsValueNegative; // Explicitly make a shorter size_t alias for convenience. using SizeT = StrictNumeric<size_t>; } // namespace base } // namespace pdfium #endif // THIRD_PARTY_BASE_NUMERICS_SAFE_CONVERSIONS_H_
/media/esteban/ACOS/dotOS/external/libchrome/base/numerics/safe_conversions.h
320
321
322
323
324
325
326
327
328
329
BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsGreater, >); BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsGreaterOrEqual, >=); BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsEqual, ==); BASE_NUMERIC_COMPARISON_OPERATORS(Strict, IsNotEqual, !=); }; // namespace internal using internal::as_signed; using internal::as_unsigned; using internal::checked_cast;
+ show +
330
331
332
333
334
335
using internal::strict_cast; using internal::saturated_cast; using internal::SafeUnsignedAbs; using internal::StrictNumeric; using internal::MakeStrictNum; using internal::IsValueInRangeForNumericType;
+ show +
336
337
338
339
340
341
342
343
344
using internal::IsTypeInRangeForNumericType; using internal::IsValueNegative; // Explicitly make a shorter size_t alias for convenience. using SizeT = StrictNumeric<size_t>; } // namespace base #endif // BASE_NUMERICS_SAFE_CONVERSIONS_H_

[CVE-2015-0973_1.diff] png.c #3
+#ifdef __GNUC__ +/* This exists solely to work round a warning from GNU C. */ +static int /* PRIVATE */ +png_gt(size_t a, size_t b) +{ + return a > b; +} +#else +# define png_gt(a,b) ((a) > (b)) +#endif + + else if (width > PNG_UINT_31_MAX) + { + png_warning(png_ptr, "Invalid image width in IHDR"); + error = 1; + } + + else if (png_gt(width, + (PNG_SIZE_MAX >> 3) /* 8-byte RGBA pixels */ + - 48 /* big_row_buf hack */ + - 1 /* filter byte */ + - 7*8 /* rounding width to multiple of 8 pix */ + - 8)) /* extra max_pixel_depth pad */ + { + /* The size of the row must be within the limits of this architecture. + * Because the read code can perform arbitrary transformations the + * maximum size is checked here. Because the code in png_read_start_row + * adds extra space "for safety's sake" in several places a conservative + * limit is used here. + * + * NOTE: it would be far better to check the size that is actually used, + * but the effect in the real world is minor and the changes are more + * extensive, therefore much more dangerous and much more difficult to + * write in a way that avoids compiler warnings. + */ + png_warning(png_ptr, "Image width is too large for this architecture"); + error = 1; + } + +# ifdef PNG_SET_USER_LIMITS_SUPPORTED + else if (width > png_ptr->user_width_max) +# else + else if (width > PNG_USER_WIDTH_MAX) +# endif + { + png_warning(png_ptr, "Image width exceeds user limit in IHDR"); + error = 1; + } -# ifdef PNG_SET_USER_LIMITS_SUPPORTED - if (width > png_ptr->user_width_max) - -# else - if (width > PNG_USER_WIDTH_MAX) -# endif - { - png_warning(png_ptr, "Image width exceeds user limit in IHDR"); - error = 1; - }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/libpng16/png.c
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
* * NOTE: it would be far better to check the size that is actually used, * but the effect in the real world is minor and the changes are more * extensive, therefore much more dangerous and much more difficult to * write in a way that avoids compiler warnings. */ png_warning(png_ptr, "Image width is too large for this architecture"); error = 1; }
+ show +
2590
2591
2592
2593
2594
2595
2596
2597
#ifdef PNG_SET_USER_LIMITS_SUPPORTED if (width > png_ptr->user_width_max) #else if (width > PNG_USER_WIDTH_MAX) #endif { png_warning(png_ptr, "Image width exceeds user limit in IHDR"); error = 1;
+ show +
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
} if (height == 0) { png_warning(png_ptr, "Image height is zero in IHDR"); error = 1; } if (height > PNG_UINT_31_MAX) {
/media/esteban/ACOS/dotOS/external/libpng/png.c
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
* * NOTE: it would be far better to check the size that is actually used, * but the effect in the real world is minor and the changes are more * extensive, therefore much more dangerous and much more difficult to * write in a way that avoids compiler warnings. */ png_warning(png_ptr, "Image width is too large for this architecture"); error = 1; }
+ show +
2589
2590
2591
2592
2593
2594
2595
2596
#ifdef PNG_SET_USER_LIMITS_SUPPORTED if (width > png_ptr->user_width_max) #else if (width > PNG_USER_WIDTH_MAX) #endif { png_warning(png_ptr, "Image width exceeds user limit in IHDR"); error = 1;
+ show +
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
} if (height == 0) { png_warning(png_ptr, "Image height is zero in IHDR"); error = 1; } if (height > PNG_UINT_31_MAX) {

[CVE-2023-40093_1.diff] agg_path_storage.cpp #2
+} // namespace pdfium +namespace pdfium +{ -path_storage::path_storage() : - m_total_vertices(0), - m_total_blocks(0), - m_max_blocks(0), - m_coord_blocks(0), - m_cmd_blocks(0), - m_iterator(0) -{ +path_storage::path_storage() = default; +path_storage::path_storage(path_storage&& other) { + m_total_vertices = other.m_total_vertices; + m_total_blocks = other.m_total_blocks; + m_max_blocks = other.m_max_blocks; + m_coord_blocks = other.m_coord_blocks; + m_cmd_blocks = other.m_cmd_blocks; + m_iterator = other.m_iterator; + other.m_total_vertices = 0; + other.m_total_blocks = 0; + other.m_max_blocks = 0; + other.m_coord_blocks = nullptr; + other.m_cmd_blocks = nullptr; + other.m_iterator = 0;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/agg23/agg_path_storage.cpp
34
35
36
37
38
39
40
41
42
43
{ if(m_total_blocks) { float** coord_blk = m_coord_blocks + m_total_blocks - 1; while(m_total_blocks--) { FX_Free(*coord_blk); --coord_blk; } FX_Free(m_coord_blocks); } }
+ show +
44
45
46
47
48
49
50
path_storage::path_storage() : m_total_vertices(0), m_total_blocks(0), m_max_blocks(0), m_coord_blocks(0), m_cmd_blocks(0), m_iterator(0)
+ show +
51
52
53
54
55
56
57
58
59
60
{ } void path_storage::allocate_block(unsigned nb) { if(nb >= m_max_blocks) { float** new_coords = FX_Alloc2D(float*, m_max_blocks + block_pool, 2); unsigned char** new_cmds = (unsigned char**)(new_coords + m_max_blocks + block_pool); if(m_coord_blocks) {

[CVE-2023-40093_1.diff] agg_curves.h #2
+} // namespace pdfium +namespace pdfium +{ +} // namespace pdfium +namespace pdfium +{ +} // namespace pdfium +namespace pdfium +{ +} // namespace pdfium +namespace pdfium +{ +} // namespace pdfium +namespace pdfium +{ +} // namespace pdfium +namespace pdfium +{ +} // namespace pdfium +namespace pdfium +{ - unsigned vertex_flag(float* x, float* y, int& flag) - { - if(m_count >= m_points.size()) { - return path_cmd_stop; - } - const point_type& p = m_points[m_count++]; - *x = p.x; - *y = p.y; - flag = p.flag; - return (m_count == 1) ? path_cmd_move_to : path_cmd_line_to; - } - int count() - { - return m_points.size(); - }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/agg23/agg_curves.h
98
99
100
101
102
103
104
105
106
107
unsigned vertex(float* x, float* y) { if(m_count >= m_points.size()) { return path_cmd_stop; } const point_type& p = m_points[m_count++]; *x = p.x; *y = p.y; return (m_count == 1) ? path_cmd_move_to : path_cmd_line_to; }
+ show +
108
109
110
111
112
113
114
115
116
117
118
119
120
121
unsigned vertex_flag(float* x, float* y, int& flag) { if(m_count >= m_points.size()) { return path_cmd_stop; } const point_type& p = m_points[m_count++]; *x = p.x; *y = p.y; flag = p.flag; return (m_count == 1) ? path_cmd_move_to : path_cmd_line_to; } int count() { return m_points.size();
+ show +
122
123
124
125
126
127
128
129
130
131
} private: void bezier(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); void recursive_bezier(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4,

[CVE-2023-40093_1.diff] agg_curves.h #3
- unsigned vertex_curve_flag(float* x, float* y, int& flag) - { - return m_curve_div.vertex_flag(x, y, flag); - } - int count() - { - return m_curve_div.count(); - } +} // namespace pdfium
/media/esteban/ACOS/dotOS/external/pdfium/third_party/agg23/agg_curves.h
166
167
168
169
170
171
172
173
174
175
init(cp[0], cp[1], cp[2], cp[3], cp[4], cp[5], cp[6], cp[7]); } void rewind(unsigned path_id) { m_curve_div.rewind(path_id); } unsigned vertex(float* x, float* y) { return m_curve_div.vertex(x, y); }
+ show +
176
177
178
179
180
181
182
unsigned vertex_curve_flag(float* x, float* y, int& flag) { return m_curve_div.vertex_flag(x, y, flag); } int count() { return m_curve_div.count();
+ show +
183
184
185
186
187
188
} private: curve4_div m_curve_div; }; } #endif

[CVE-2023-40093_1.diff] agg_path_storage.h #3
+namespace pdfium +{ + path_storage(path_storage&& other); + path_storage& operator=(path_storage&&) = delete; + path_storage(const path_storage&) = delete; + path_storage& operator=(const path_storage&) = delete; - template<class VertexSource> - void add_path_curve(VertexSource& vs, - unsigned path_id = 0, - bool solid_path = true) - { - float x, y; - unsigned cmd; - int flag; - vs.rewind(path_id); - while(!is_stop(cmd = vs.vertex_curve_flag(&x, &y, flag))) { - if(is_move_to(cmd) && solid_path && m_total_vertices) { - cmd = path_cmd_line_to | flag; - } - add_vertex(x, y, cmd | flag); - } - }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/agg23/agg_path_storage.h
63
64
65
66
67
68
69
70
71
72
float x, y; unsigned cmd; vs.rewind(path_id); while(!is_stop(cmd = vs.vertex(&x, &y))) { if(is_move_to(cmd) && solid_path && m_total_vertices) { cmd = path_cmd_line_to; } add_vertex(x, y, cmd); } }
+ show +
73
74
75
76
77
78
79
80
81
82
83
84
85
86
template<class VertexSource> void add_path_curve(VertexSource& vs, unsigned path_id = 0, bool solid_path = true) { float x, y; unsigned cmd; int flag; vs.rewind(path_id); while(!is_stop(cmd = vs.vertex_curve_flag(&x, &y, flag))) { if(is_move_to(cmd) && solid_path && m_total_vertices) { cmd = path_cmd_line_to | flag; } add_vertex(x, y, cmd | flag);
+ show +
87
88
89
90
91
92
93
94
95
96
} } unsigned total_vertices() const { return m_total_vertices; } unsigned vertex(unsigned idx, float* x, float* y) const { unsigned nb = idx >> block_shift; const float* pv = m_coord_blocks[nb] + ((idx & block_mask) << 1);

[CVE-2023-40093_1.diff] agg_path_storage.h #4
- unsigned m_total_vertices; - unsigned m_total_blocks; - unsigned m_max_blocks; - float** m_coord_blocks; - unsigned char** m_cmd_blocks; - unsigned m_iterator; + unsigned m_total_vertices = 0; + unsigned m_total_blocks = 0; + unsigned m_max_blocks = 0; + float** m_coord_blocks = nullptr; + unsigned char** m_cmd_blocks = nullptr; + unsigned m_iterator = 0;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/agg23/agg_path_storage.h
107
108
109
110
111
112
113
114
115
116
return m_cmd_blocks[idx >> block_shift][idx & block_mask] & path_flags_jr; } void rewind(unsigned path_id); unsigned vertex(float* x, float* y); void add_vertex(float x, float y, unsigned cmd); void end_poly(); private: void allocate_block(unsigned nb); unsigned char* storage_ptrs(float** xy_ptr); private:
+ show +
117
118
119
120
121
122
unsigned m_total_vertices; unsigned m_total_blocks; unsigned m_max_blocks; float** m_coord_blocks; unsigned char** m_cmd_blocks; unsigned m_iterator;
+ show +
123
124
125
126
127
128
129
130
131
132
}; inline unsigned path_storage::vertex(float* x, float* y) { if(m_iterator >= m_total_vertices) { return path_cmd_stop; } return vertex(m_iterator++, x, y); } inline unsigned path_storage::prev_vertex(float* x, float* y) const {

[CVE-2023-40093_1.diff] 0027-changes-from-beginning-of-time.patch #2
+ Curve -> Evals = NULL; + } -- if (Curve) _cmsFree(ContextID, Curve); -+ if (Curve) { -+ _cmsFree(ContextID, Curve); -+ Curve = NULL; -+ } - } - - // Utility function, free 3 gamma tables -@@ -799,7 +814,10 @@ void CMSEXPORT cmsFreeToneCurveTriple(cmsToneCurve* Curve[3]) - // Duplicate a gamma table - cmsToneCurve* CMSEXPORT cmsDupToneCurve(const cmsToneCurve* In) - { -- if (In == NULL || In ->Segments == NULL || In ->Table16 == NULL) return NULL; -+ // Xiaochuan Liu -+ // fix openpdf bug(mantis id:0055683, google id:360198) -+ // the function CurveSetElemTypeFree in cmslut.c also needs to check pointer -+ if (In == NULL || In ->InterpParams == NULL || In ->Segments == NULL || In ->Table16 == NULL) return NULL; - - return AllocateToneCurveStruct(In ->InterpParams ->ContextID, In ->nEntries, In ->nSegments, In ->Segments, In ->Table16); + _cmsFree(ContextID, Curve);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/0027-changes-from-beginning-of-time.patch
59
60
61
62
63
64
65
66
67
68
_cmsFree(ContextID, Curve ->SegInterp); + Curve ->SegInterp = NULL; } - if (Curve -> Evals) + if (Curve -> Evals) { _cmsFree(ContextID, Curve -> Evals); + Curve -> Evals = NULL; + }
+ show +
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
- if (Curve) _cmsFree(ContextID, Curve); + if (Curve) { + _cmsFree(ContextID, Curve); + Curve = NULL; + } } // Utility function, free 3 gamma tables @@ -799,7 +814,10 @@ void CMSEXPORT cmsFreeToneCurveTriple(cmsToneCurve* Curve[3]) // Duplicate a gamma table cmsToneCurve* CMSEXPORT cmsDupToneCurve(const cmsToneCurve* In) { - if (In == NULL || In ->Segments == NULL || In ->Table16 == NULL) return NULL; + // Xiaochuan Liu + // fix openpdf bug(mantis id:0055683, google id:360198) + // the function CurveSetElemTypeFree in cmslut.c also needs to check pointer + if (In == NULL || In ->InterpParams == NULL || In ->Segments == NULL || In ->Table16 == NULL) return NULL; return AllocateToneCurveStruct(In ->InterpParams ->ContextID, In ->nEntries, In ->nSegments, In ->Segments, In ->Table16);
+ show +
88
89
90
91
92
93
94
95
96
97
} diff --git a/third_party/lcms/src/cmsio0.c b/third_party/lcms/src/cmsio0.c index 1b026488d..cc5f89064 100644 --- a/third_party/lcms/src/cmsio0.c +++ b/third_party/lcms/src/cmsio0.c @@ -479,6 +479,14 @@ cmsIOHANDLER* CMSEXPORT cmsGetProfileIOhandler(cmsHPROFILE hProfile) return Icc->IOhandler; } +#ifdef _WIN32_WCE

[CVE-2023-40093_1.diff] lcms2_plugin.h #7
-typedef cmsUInt8Number* (* cmsFormatter16)(register struct _cmstransform_struct* CMMcargo, - register cmsUInt16Number Values[], - register cmsUInt8Number* Buffer, - register cmsUInt32Number Stride); +typedef cmsUInt8Number* (* cmsFormatter16)(CMSREGISTER struct _cmstransform_struct* CMMcargo, + CMSREGISTER cmsUInt16Number Values[], + CMSREGISTER cmsUInt8Number* Buffer, + CMSREGISTER cmsUInt32Number Stride);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/include/lcms2_plugin.h
333
334
335
336
337
338
339
340
341
342
} cmsPluginParametricCurves; //---------------------------------------------------------------------------------------------------------- // Formatters. This plug-in adds new handlers, replacing them if they already exist. Formatters dealing with // cmsFloat32Number (bps = 4) or double (bps = 0) types are requested via FormatterFloat callback. Others come across // Formatter16 callback struct _cmstransform_struct;
+ show +
343
344
345
346
typedef cmsUInt8Number* (* cmsFormatter16)(register struct _cmstransform_struct* CMMcargo, register cmsUInt16Number Values[], register cmsUInt8Number* Buffer, register cmsUInt32Number Stride);
+ show +
347
348
349
350
351
352
353
354
355
356
typedef cmsUInt8Number* (* cmsFormatterFloat)(struct _cmstransform_struct* CMMcargo, cmsFloat32Number Values[], cmsUInt8Number* Buffer, cmsUInt32Number Stride); // This type holds a pointer to a formatter that can be either 16 bits or cmsFloat32Number typedef union { cmsFormatter16 Fmt16; cmsFormatterFloat FmtFloat;

[CVE-2023-40093_1.diff] cmscnvrt.c #2
-// Link several profiles to obtain a single LUT modelling the whole color transform. Intents, Black point -// compensation and Adaptation parameters may vary across profiles. BPC and Adaptation refers to the PCS -// after the profile. I.e, BPC[0] refers to connexion between profile(0) and profile(1) -cmsPipeline* _cmsLinkProfiles(cmsContext ContextID, - cmsUInt32Number nProfiles, - cmsUInt32Number Intents[], - cmsHPROFILE hProfiles[], - cmsBool BPC[], - cmsFloat64Number AdaptationStates[], - cmsUInt32Number dwFlags); - -//--------------------------------------------------------------------------------- -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmscnvrt.c
23
24
25
26
27
28
29
30
31
32
// //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Link several profiles to obtain a single LUT modelling the whole color transform. Intents, Black point // compensation and Adaptation parameters may vary across profiles. BPC and Adaptation refers to the PCS // after the profile. I.e, BPC[0] refers to connexion between profile(0) and profile(1)
+ show +
33
34
35
36
37
38
39
cmsPipeline* _cmsLinkProfiles(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags);
+ show +
40
41
42
43
44
45
46
47
48
49
//--------------------------------------------------------------------------------- // This is the default routine for ICC-style intents. A user may decide to override it by using a plugin. // Supported intents are perceptual, relative colorimetric, saturation and ICC-absolute colorimetric static cmsPipeline* DefaultICCintents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[],

[CVE-2023-40093_1.diff] cmscnvrt.c #4
- _cmsReadMediaWhitePoint(&WhitePointIn, hProfiles[i-1]); - _cmsReadCHAD(&ChromaticAdaptationMatrixIn, hProfiles[i-1]); + if (!_cmsReadMediaWhitePoint(&WhitePointIn, hProfiles[i - 1])) return FALSE; + if (!_cmsReadCHAD(&ChromaticAdaptationMatrixIn, hProfiles[i - 1])) return FALSE; - _cmsReadMediaWhitePoint(&WhitePointOut, hProfiles[i]); - _cmsReadCHAD(&ChromaticAdaptationMatrixOut, hProfiles[i]); + if (!_cmsReadMediaWhitePoint(&WhitePointOut, hProfiles[i])) return FALSE; + if (!_cmsReadCHAD(&ChromaticAdaptationMatrixOut, hProfiles[i])) return FALSE;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmscnvrt.c
376
377
378
379
380
381
382
383
384
385
// m and off are set to identity and this is detected latter on _cmsMAT3identity(m); _cmsVEC3init(off, 0, 0, 0); // If intent is abs. colorimetric, if (Intent == INTENT_ABSOLUTE_COLORIMETRIC) { cmsCIEXYZ WhitePointIn, WhitePointOut; cmsMAT3 ChromaticAdaptationMatrixIn, ChromaticAdaptationMatrixOut;
+ show +
386
387
388
389
390
_cmsReadMediaWhitePoint(&WhitePointIn, hProfiles[i-1]); _cmsReadCHAD(&ChromaticAdaptationMatrixIn, hProfiles[i-1]); _cmsReadMediaWhitePoint(&WhitePointOut, hProfiles[i]); _cmsReadCHAD(&ChromaticAdaptationMatrixOut, hProfiles[i]);
+ show +
391
392
393
394
395
396
397
398
399
400
if (!ComputeAbsoluteIntent(AdaptationState, &WhitePointIn, &ChromaticAdaptationMatrixIn, &WhitePointOut, &ChromaticAdaptationMatrixOut, m)) return FALSE; } else { // Rest of intents may apply BPC. if (BPC) {

[CVE-2023-40093_1.diff] lcms2_internal.h #12
+// Paralellization +cmsBool _cmsRegisterParallelizationPlugin(cmsContext ContextID, cmsPluginBase* Plugin); + + ParallelizationPlugin, +// Container for parallelization plug-in +typedef struct { + + cmsInt32Number MaxWorkers; // Number of workers to do as maximum + cmsInt32Number WorkerFlags; // reserved + _cmsTransform2Fn SchedulerFn; // callback to setup functions + +} _cmsParallelizationPluginChunkType; + +// The global Context0 storage for parallelization plug-in +extern _cmsParallelizationPluginChunkType _cmsParallelizationPluginChunk; + +// Allocate parallelization container. +void _cmsAllocParallelizationPluginChunk(struct _cmsContext_struct* ctx, + const struct _cmsContext_struct* src); + + + -cmsInterpParams* _cmsComputeInterpParams(cmsContext ContextID, cmsUInt32Number nSamples, cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags); -cmsInterpParams* _cmsComputeInterpParamsEx(cmsContext ContextID, const cmsUInt32Number nSamples[], cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags); -void _cmsFreeInterpParams(cmsInterpParams* p); -cmsBool _cmsSetInterpolationRoutine(cmsContext ContextID, cmsInterpParams* p); +CMSCHECKPOINT cmsInterpParams* CMSEXPORT _cmsComputeInterpParams(cmsContext ContextID, cmsUInt32Number nSamples, cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags); +cmsInterpParams* _cmsComputeInterpParamsEx(cmsContext ContextID, const cmsUInt32Number nSamples[], cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags); +CMSCHECKPOINT void CMSEXPORT _cmsFreeInterpParams(cmsInterpParams* p); +cmsBool _cmsSetInterpolationRoutine(cmsContext ContextID, cmsInterpParams* p);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/lcms2_internal.h
816
817
818
819
820
821
822
823
824
825
cmsTagTypeHandler* _cmsGetTagTypeHandler(cmsContext ContextID, cmsTagTypeSignature sig); cmsTagTypeSignature _cmsGetTagTrueType(cmsHPROFILE hProfile, cmsTagSignature sig); cmsTagDescriptor* _cmsGetTagDescriptor(cmsContext ContextID, cmsTagSignature sig); // Error logging --------------------------------------------------------------------------------------------------------- void _cmsTagSignature2String(char String[5], cmsTagSignature sig); // Interpolation ---------------------------------------------------------------------------------------------------------
+ show +
826
827
828
829
cmsInterpParams* _cmsComputeInterpParams(cmsContext ContextID, cmsUInt32Number nSamples, cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags); cmsInterpParams* _cmsComputeInterpParamsEx(cmsContext ContextID, const cmsUInt32Number nSamples[], cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags); void _cmsFreeInterpParams(cmsInterpParams* p); cmsBool _cmsSetInterpolationRoutine(cmsContext ContextID, cmsInterpParams* p);
+ show +
830
831
832
833
834
835
836
837
838
839
// Curves ---------------------------------------------------------------------------------------------------------------- // This struct holds information about a segment, plus a pointer to the function that implements the evaluation. // In the case of table-based, Eval pointer is set to NULL // The gamma function main structure struct _cms_curve_struct { cmsInterpParams* InterpParams; // Private optimizations for interpolation

[CVE-2023-40093_1.diff] lcms2_internal.h #13
-cmsStage* _cmsStageAllocLab2XYZ(cmsContext ContextID); -cmsStage* _cmsStageAllocXYZ2Lab(cmsContext ContextID); -cmsStage* _cmsStageAllocLabPrelin(cmsContext ContextID); -cmsStage* _cmsStageAllocLabV2ToV4(cmsContext ContextID); -cmsStage* _cmsStageAllocLabV2ToV4curves(cmsContext ContextID); -cmsStage* _cmsStageAllocLabV4ToV2(cmsContext ContextID); -cmsStage* _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS); -cmsStage* _cmsStageAllocIdentityCurves(cmsContext ContextID, cmsUInt32Number nChannels); -cmsStage* _cmsStageAllocIdentityCLut(cmsContext ContextID, cmsUInt32Number nChan); -cmsStage* _cmsStageNormalizeFromLabFloat(cmsContext ContextID); -cmsStage* _cmsStageNormalizeFromXyzFloat(cmsContext ContextID); -cmsStage* _cmsStageNormalizeToLabFloat(cmsContext ContextID); -cmsStage* _cmsStageNormalizeToXyzFloat(cmsContext ContextID); -cmsStage* _cmsStageClipNegatives(cmsContext ContextID, cmsUInt32Number nChannels); +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocLab2XYZ(cmsContext ContextID); +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocXYZ2Lab(cmsContext ContextID); +cmsStage* _cmsStageAllocLabPrelin(cmsContext ContextID); +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocLabV2ToV4(cmsContext ContextID); +cmsStage* _cmsStageAllocLabV2ToV4curves(cmsContext ContextID); +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocLabV4ToV2(cmsContext ContextID); +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS); +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocIdentityCurves(cmsContext ContextID, cmsUInt32Number nChannels); +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocIdentityCLut(cmsContext ContextID, cmsUInt32Number nChan); +cmsStage* _cmsStageNormalizeFromLabFloat(cmsContext ContextID); +cmsStage* _cmsStageNormalizeFromXyzFloat(cmsContext ContextID); +cmsStage* _cmsStageNormalizeToLabFloat(cmsContext ContextID); +cmsStage* _cmsStageNormalizeToXyzFloat(cmsContext ContextID); +cmsStage* _cmsStageClipNegatives(cmsContext ContextID, cmsUInt32Number nChannels); -cmsToneCurve** _cmsStageGetPtrToCurveSet(const cmsStage* mpe); - - -// Pipeline Evaluator (in floating point) -typedef void (* _cmsPipelineEvalFloatFn)(const cmsFloat32Number In[], - cmsFloat32Number Out[], - const void* Data); +cmsToneCurve** _cmsStageGetPtrToCurveSet(const cmsStage* mpe);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/lcms2_internal.h
869
870
871
872
873
874
875
876
877
878
// A generic pointer to whatever memory needed by the stage void* Data; // Maintains linked list (used internally) struct _cmsStage_struct* Next; }; // Special Stages (cannot be saved)
+ show +
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
cmsStage* _cmsStageAllocLab2XYZ(cmsContext ContextID); cmsStage* _cmsStageAllocXYZ2Lab(cmsContext ContextID); cmsStage* _cmsStageAllocLabPrelin(cmsContext ContextID); cmsStage* _cmsStageAllocLabV2ToV4(cmsContext ContextID); cmsStage* _cmsStageAllocLabV2ToV4curves(cmsContext ContextID); cmsStage* _cmsStageAllocLabV4ToV2(cmsContext ContextID); cmsStage* _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS); cmsStage* _cmsStageAllocIdentityCurves(cmsContext ContextID, cmsUInt32Number nChannels); cmsStage* _cmsStageAllocIdentityCLut(cmsContext ContextID, cmsUInt32Number nChan); cmsStage* _cmsStageNormalizeFromLabFloat(cmsContext ContextID); cmsStage* _cmsStageNormalizeFromXyzFloat(cmsContext ContextID); cmsStage* _cmsStageNormalizeToLabFloat(cmsContext ContextID); cmsStage* _cmsStageNormalizeToXyzFloat(cmsContext ContextID); cmsStage* _cmsStageClipNegatives(cmsContext ContextID, cmsUInt32Number nChannels); // For curve set only cmsToneCurve** _cmsStageGetPtrToCurveSet(const cmsStage* mpe); // Pipeline Evaluator (in floating point) typedef void (* _cmsPipelineEvalFloatFn)(const cmsFloat32Number In[], cmsFloat32Number Out[], const void* Data);
+ show +
903
904
905
906
907
908
909
910
911
912
struct _cmsPipeline_struct { cmsStage* Elements; // Points to elements chain cmsUInt32Number InputChannels, OutputChannels; // Data & evaluators void *Data; _cmsOPTeval16Fn Eval16Fn;

[CVE-2023-40093_1.diff] cmsxform.c #9
+// returns original flags +cmsUInt32Number CMSEXPORT _cmsGetTransformFlags(struct _cmstransform_struct* CMMcargo) +{ + _cmsAssert(CMMcargo != NULL); + return CMMcargo->dwOriginalFlags; +} + +// Returns the worker callback for parallelization plug-ins +_cmsTransform2Fn CMSEXPORT _cmsGetTransformWorker(struct _cmstransform_struct* CMMcargo) +{ + _cmsAssert(CMMcargo != NULL); + return CMMcargo->Worker; +} + +// This field holds maximum number of workers or -1 to auto +cmsInt32Number CMSEXPORT _cmsGetTransformMaxWorkers(struct _cmstransform_struct* CMMcargo) +{ + _cmsAssert(CMMcargo != NULL); + return CMMcargo->MaxWorkers; +} + +// This field is actually unused and reserved +cmsUInt32Number CMSEXPORT _cmsGetTransformWorkerFlags(struct _cmstransform_struct* CMMcargo) +{ + _cmsAssert(CMMcargo != NULL); + return CMMcargo->WorkerFlags; +} + +// In the case there is a parallelization plug-in, let it to do its job +static +void ParalellizeIfSuitable(_cmsTRANSFORM* p) +{ + _cmsParallelizationPluginChunkType* ctx = (_cmsParallelizationPluginChunkType*)_cmsContextGetClientChunk(p->ContextID, ParallelizationPlugin); + + _cmsAssert(p != NULL); + if (ctx != NULL && ctx->SchedulerFn != NULL) { + + p->Worker = p->xform; + p->xform = ctx->SchedulerFn; + p->MaxWorkers = ctx->MaxWorkers; + p->WorkerFlags = ctx->WorkerFlags; + } +} + + +/** +* An empty unroll to avoid a check with NULL on cmsDoTransform() +*/ +static +cmsUInt8Number* UnrollNothing(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride) +{ + return accum; + + cmsUNUSED_PARAMETER(info); + cmsUNUSED_PARAMETER(wIn); + cmsUNUSED_PARAMETER(Stride); +} + +static +cmsUInt8Number* PackNothing(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride) +{ + return output; + + cmsUNUSED_PARAMETER(info); + cmsUNUSED_PARAMETER(wOut); + cmsUNUSED_PARAMETER(Stride); +} - for (Plugin = ctx->TransformCollection; - Plugin != NULL; - Plugin = Plugin->Next) { + if (!(*dwFlags & cmsFLAGS_NOOPTIMIZE)) + { + for (Plugin = ctx->TransformCollection; + Plugin != NULL; + Plugin = Plugin->Next) { - if (Plugin->Factory(&p->xform, &p->UserData, &p->FreeUserData, &p->Lut, InputFormat, OutputFormat, dwFlags)) { + if (Plugin->Factory(&p->xform, &p->UserData, &p->FreeUserData, &p->Lut, InputFormat, OutputFormat, dwFlags)) { - // Last plugin in the declaration order takes control. We just keep - // the original parameters as a logging. - // Note that cmsFLAGS_CAN_CHANGE_FORMATTER is not set, so by default - // an optimized transform is not reusable. The plug-in can, however, change - // the flags and make it suitable. + // Last plugin in the declaration order takes control. We just keep + // the original parameters as a logging. + // Note that cmsFLAGS_CAN_CHANGE_FORMATTER is not set, so by default + // an optimized transform is not reusable. The plug-in can, however, change + // the flags and make it suitable. - p->ContextID = ContextID; - p->InputFormat = *InputFormat; - p->OutputFormat = *OutputFormat; - p->dwOriginalFlags = *dwFlags; + p->ContextID = ContextID; + p->InputFormat = *InputFormat; + p->OutputFormat = *OutputFormat; + p->dwOriginalFlags = *dwFlags; - // Fill the formatters just in case the optimized routine is interested. - // No error is thrown if the formatter doesn't exist. It is up to the optimization - // factory to decide what to do in those cases. - p->FromInput = _cmsGetFormatter(ContextID, *InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_16BITS).Fmt16; - p->ToOutput = _cmsGetFormatter(ContextID, *OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS).Fmt16; - p->FromInputFloat = _cmsGetFormatter(ContextID, *InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT).FmtFloat; - p->ToOutputFloat = _cmsGetFormatter(ContextID, *OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT).FmtFloat; + // Fill the formatters just in case the optimized routine is interested. + // No error is thrown if the formatter doesn't exist. It is up to the optimization + // factory to decide what to do in those cases. + p->FromInput = _cmsGetFormatter(ContextID, *InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_16BITS).Fmt16; + p->ToOutput = _cmsGetFormatter(ContextID, *OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS).Fmt16; + p->FromInputFloat = _cmsGetFormatter(ContextID, *InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT).FmtFloat; + p->ToOutputFloat = _cmsGetFormatter(ContextID, *OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT).FmtFloat; - // Save the day? (Ignore the warning) - if (Plugin->OldXform) { - p->OldXform = (_cmsTransformFn) p->xform; - p->xform = _cmsTransform2toTransformAdaptor; - } - - return p; - } - } + // Save the day? (Ignore the warning) + if (Plugin->OldXform) { + p->OldXform = (_cmsTransformFn)(void*)p->xform; + p->xform = _cmsTransform2toTransformAdaptor; + } - // Not suitable for the transform plug-in, let's check the pipeline plug-in - _cmsOptimizePipeline(ContextID, &p->Lut, Intent, InputFormat, OutputFormat, dwFlags); + ParalellizeIfSuitable(p); + return p; + } + } + } + + // Not suitable for the transform plug-in, let's check the pipeline plug-in + _cmsOptimizePipeline(ContextID, &p->Lut, Intent, InputFormat, OutputFormat, dwFlags); - if (_cmsFormatterIsFloat(*InputFormat) && _cmsFormatterIsFloat(*OutputFormat)) { + if (_cmsFormatterIsFloat(*OutputFormat)) {
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsxform.c
773
774
775
776
777
778
779
780
781
782
cmsPipelineFree(lut); return NULL; } // Store the proposed pipeline p->Lut = lut; // Let's see if any plug-in want to do the transform by itself if (p->Lut != NULL) {
+ show +
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
for (Plugin = ctx->TransformCollection; Plugin != NULL; Plugin = Plugin->Next) { if (Plugin->Factory(&p->xform, &p->UserData, &p->FreeUserData, &p->Lut, InputFormat, OutputFormat, dwFlags)) { // Last plugin in the declaration order takes control. We just keep // the original parameters as a logging. // Note that cmsFLAGS_CAN_CHANGE_FORMATTER is not set, so by default // an optimized transform is not reusable. The plug-in can, however, change // the flags and make it suitable. p->ContextID = ContextID; p->InputFormat = *InputFormat; p->OutputFormat = *OutputFormat; p->dwOriginalFlags = *dwFlags; // Fill the formatters just in case the optimized routine is interested. // No error is thrown if the formatter doesn't exist. It is up to the optimization // factory to decide what to do in those cases. p->FromInput = _cmsGetFormatter(ContextID, *InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_16BITS).Fmt16; p->ToOutput = _cmsGetFormatter(ContextID, *OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS).Fmt16; p->FromInputFloat = _cmsGetFormatter(ContextID, *InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT).FmtFloat; p->ToOutputFloat = _cmsGetFormatter(ContextID, *OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT).FmtFloat; // Save the day? (Ignore the warning) if (Plugin->OldXform) { p->OldXform = (_cmsTransformFn) p->xform; p->xform = _cmsTransform2toTransformAdaptor; } return p; } } // Not suitable for the transform plug-in, let's check the pipeline plug-in _cmsOptimizePipeline(ContextID, &p->Lut, Intent, InputFormat, OutputFormat, dwFlags); } // Check whatever this is a true floating point transform if (_cmsFormatterIsFloat(*InputFormat) && _cmsFormatterIsFloat(*OutputFormat)) {
+ show +
824
825
826
827
828
829
830
831
832
833
// Get formatter function always return a valid union, but the contents of this union may be NULL. p ->FromInputFloat = _cmsGetFormatter(ContextID, *InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT).FmtFloat; p ->ToOutputFloat = _cmsGetFormatter(ContextID, *OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT).FmtFloat; *dwFlags |= cmsFLAGS_CAN_CHANGE_FORMATTER; if (p ->FromInputFloat == NULL || p ->ToOutputFloat == NULL) { cmsSignalError(ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported raster format"); cmsDeleteTransform(p);

[CVE-2023-40093_1.diff] cmsintrp.c #5
- if (val2 == 1.0) { - Output[0] = LutTable[p -> Domain[0]]; - return; + if (val2 == 1.0 || p->Domain[0] == 0) { + Output[0] = LutTable[p -> Domain[0]]; + else + { + val2 *= p->Domain[0]; - val2 *= p -> Domain[0]; + cell0 = (int)floor(val2); + cell1 = (int)ceil(val2); - cell0 = (int) floor(val2); - cell1 = (int) ceil(val2); + // Rest is 16 LSB bits + rest = val2 - cell0; - // Rest is 16 LSB bits - rest = val2 - cell0; + y0 = LutTable[cell0]; + y1 = LutTable[cell1]; - y0 = LutTable[cell0] ; - y1 = LutTable[cell1] ; - - Output[0] = y0 + (y1 - y0) * rest; + Output[0] = y0 + (y1 - y0) * rest; + } -static -void Eval1Input(register const cmsUInt16Number Input[], - register cmsUInt16Number Output[], - register const cmsInterpParams* p16) +static CMS_NO_SANITIZE +void Eval1Input(CMSREGISTER const cmsUInt16Number Input[], + CMSREGISTER cmsUInt16Number Output[], + CMSREGISTER const cmsInterpParams* p16)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
233
234
235
236
237
238
239
240
241
242
const cmsInterpParams* p) { cmsFloat32Number y1, y0; cmsFloat32Number val2, rest; int cell0, cell1; const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table; val2 = fclamp(Value[0]); // if last value...
+ show +
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
if (val2 == 1.0) { Output[0] = LutTable[p -> Domain[0]]; return; } val2 *= p -> Domain[0]; cell0 = (int) floor(val2); cell1 = (int) ceil(val2); // Rest is 16 LSB bits rest = val2 - cell0; y0 = LutTable[cell0] ; y1 = LutTable[cell1] ; Output[0] = y0 + (y1 - y0) * rest; } // Eval gray LUT having only one input channel static void Eval1Input(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16)
+ show +
269
270
271
272
273
274
275
276
277
278
{ cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, k1, rk, K0, K1; int v; cmsUInt32Number OutChan; const cmsUInt16Number* LutTable = (cmsUInt16Number*) p16 -> Table; v = Input[0] * p16 -> Domain[0]; fk = _cmsToFixedDomain(v);

[CVE-2023-40093_1.diff] cmsintrp.c #6
- v = Input[0] * p16 -> Domain[0]; - fk = _cmsToFixedDomain(v); - k0 = FIXED_TO_INT(fk); - rk = (cmsUInt16Number) FIXED_REST_TO_INT(fk); + // if last value... + if (Input[0] == 0xffff || p16->Domain[0] == 0) { - k1 = k0 + (Input[0] != 0xFFFFU ? 1 : 0); + cmsUInt32Number y0 = p16->Domain[0] * p16->opta[0]; + + for (OutChan = 0; OutChan < p16->nOutputs; OutChan++) { + Output[OutChan] = LutTable[y0 + OutChan]; + } + } + else + { - K0 = p16 -> opta[0] * k0; - K1 = p16 -> opta[0] * k1; + v = Input[0] * p16->Domain[0]; + fk = _cmsToFixedDomain(v); - for (OutChan=0; OutChan < p16->nOutputs; OutChan++) { + k0 = FIXED_TO_INT(fk); + rk = (cmsUInt16Number)FIXED_REST_TO_INT(fk); - Output[OutChan] = LinearInterp(rk, LutTable[K0+OutChan], LutTable[K1+OutChan]); + k1 = k0 + (Input[0] != 0xFFFFU ? 1 : 0); + + K0 = p16->opta[0] * k0; + K1 = p16->opta[0] * k1; + + for (OutChan = 0; OutChan < p16->nOutputs; OutChan++) { + + Output[OutChan] = LinearInterp(rk, LutTable[K0 + OutChan], LutTable[K1 + OutChan]); + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
266
267
268
269
270
271
272
273
274
275
void Eval1Input(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16) { cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, k1, rk, K0, K1; int v; cmsUInt32Number OutChan; const cmsUInt16Number* LutTable = (cmsUInt16Number*) p16 -> Table;
+ show +
276
277
278
279
280
281
282
283
284
285
286
287
288
289
v = Input[0] * p16 -> Domain[0]; fk = _cmsToFixedDomain(v); k0 = FIXED_TO_INT(fk); rk = (cmsUInt16Number) FIXED_REST_TO_INT(fk); k1 = k0 + (Input[0] != 0xFFFFU ? 1 : 0); K0 = p16 -> opta[0] * k0; K1 = p16 -> opta[0] * k1; for (OutChan=0; OutChan < p16->nOutputs; OutChan++) { Output[OutChan] = LinearInterp(rk, LutTable[K0+OutChan], LutTable[K1+OutChan]);
+ show +
290
291
292
293
294
295
296
297
298
299
} } // Eval gray LUT having only one input channel static void Eval1InputFloat(const cmsFloat32Number Value[], cmsFloat32Number Output[], const cmsInterpParams* p)

[CVE-2023-40093_1.diff] cmsintrp.c #7
- // if last value... - if (val2 == 1.0) { - Output[0] = LutTable[p -> Domain[0]]; - return; - } + // if last value... + if (val2 == 1.0 || p->Domain[0] == 0) { - val2 *= p -> Domain[0]; + cmsUInt32Number start = p->Domain[0] * p->opta[0]; - cell0 = (int) floor(val2); - cell1 = (int) ceil(val2); + for (OutChan = 0; OutChan < p->nOutputs; OutChan++) { + Output[OutChan] = LutTable[start + OutChan]; + } + } + else + { + val2 *= p->Domain[0]; - // Rest is 16 LSB bits - rest = val2 - cell0; + cell0 = (int)floor(val2); + cell1 = (int)ceil(val2); - cell0 *= p -> opta[0]; - cell1 *= p -> opta[0]; + // Rest is 16 LSB bits + rest = val2 - cell0; - for (OutChan=0; OutChan < p->nOutputs; OutChan++) { + cell0 *= p->opta[0]; + cell1 *= p->opta[0]; - y0 = LutTable[cell0 + OutChan] ; - y1 = LutTable[cell1 + OutChan] ; + for (OutChan = 0; OutChan < p->nOutputs; OutChan++) { + + y0 = LutTable[cell0 + OutChan]; + y1 = LutTable[cell1 + OutChan]; - } + } + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
300
301
302
303
304
305
306
307
308
309
{ cmsFloat32Number y1, y0; cmsFloat32Number val2, rest; int cell0, cell1; cmsUInt32Number OutChan; const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table; val2 = fclamp(Value[0]); // if last value...
+ show +
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
if (val2 == 1.0) { Output[0] = LutTable[p -> Domain[0]]; return; } val2 *= p -> Domain[0]; cell0 = (int) floor(val2); cell1 = (int) ceil(val2); // Rest is 16 LSB bits rest = val2 - cell0; cell0 *= p -> opta[0]; cell1 *= p -> opta[0]; for (OutChan=0; OutChan < p->nOutputs; OutChan++) { y0 = LutTable[cell0 + OutChan] ; y1 = LutTable[cell1 + OutChan] ;
+ show +
330
331
332
333
334
335
336
337
338
339
Output[OutChan] = y0 + (y1 - y0) * rest; } } // Bilinear interpolation (16 bits) - cmsFloat32Number version static void BilinearInterpFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p)

[CVE-2023-40093_1.diff] cmsintrp.c #8
-static -void BilinearInterp16(register const cmsUInt16Number Input[], - register cmsUInt16Number Output[], - register const cmsInterpParams* p) +static CMS_NO_SANITIZE +void BilinearInterp16(CMSREGISTER const cmsUInt16Number Input[], + CMSREGISTER cmsUInt16Number Output[], + CMSREGISTER const cmsInterpParams* p)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
379
380
381
382
383
384
385
386
387
388
Output[OutChan] = dxy; } # undef LERP # undef DENS } // Bilinear interpolation (16 bits) - optimized version
+ show +
389
390
391
392
static void BilinearInterp16(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p)
+ show +
393
394
395
396
397
398
399
400
401
402
{ #define DENS(i,j) (LutTable[(i)+(j)+OutChan]) #define LERP(a,l,h) (cmsUInt16Number) (l + ROUND_FIXED_TO_INT(((h-l)*a))) const cmsUInt16Number* LutTable = (cmsUInt16Number*) p ->Table; int OutChan, TotalOut; cmsS15Fixed16Number fx, fy; register int rx, ry; int x0, y0;

[CVE-2023-40093_1.diff] cmsintrp.c #9
- register int rx, ry; - int x0, y0; - register int X0, X1, Y0, Y1; - int d00, d01, d10, d11, - dx0, dx1, - dxy; + CMSREGISTER int rx, ry; + int x0, y0; + CMSREGISTER int X0, X1, Y0, Y1; + + int d00, d01, d10, d11, + dx0, dx1, + dxy;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
391
392
393
394
395
396
397
398
399
400
register cmsUInt16Number Output[], register const cmsInterpParams* p) { #define DENS(i,j) (LutTable[(i)+(j)+OutChan]) #define LERP(a,l,h) (cmsUInt16Number) (l + ROUND_FIXED_TO_INT(((h-l)*a))) const cmsUInt16Number* LutTable = (cmsUInt16Number*) p ->Table; int OutChan, TotalOut; cmsS15Fixed16Number fx, fy;
+ show +
401
402
403
404
405
406
register int rx, ry; int x0, y0; register int X0, X1, Y0, Y1; int d00, d01, d10, d11, dx0, dx1, dxy;
+ show +
407
408
409
410
411
412
413
414
415
416
TotalOut = p -> nOutputs; fx = _cmsToFixedDomain((int) Input[0] * p -> Domain[0]); x0 = FIXED_TO_INT(fx); rx = FIXED_REST_TO_INT(fx); // Rest in 0..1.0 domain fy = _cmsToFixedDomain((int) Input[1] * p -> Domain[1]); y0 = FIXED_TO_INT(fy);

[CVE-2023-40093_1.diff] cmsintrp.c #10
+ - d000, d001, d010, d011, - d100, d101, d110, d111, - dx00, dx01, dx10, dx11, - dxy0, dxy1, dxyz; + d000, d001, d010, d011, + d100, d101, d110, d111, + dx00, dx01, dx10, dx11, + dxy0, dxy1, dxyz;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
453
454
455
456
457
458
459
460
461
462
{ # define LERP(a,l,h) (cmsFloat32Number) ((l)+(((h)-(l))*(a))) # define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table; cmsFloat32Number px, py, pz; int x0, y0, z0, X0, Y0, Z0, X1, Y1, Z1; int TotalOut, OutChan; cmsFloat32Number fx, fy, fz,
+ show +
463
464
465
466
d000, d001, d010, d011, d100, d101, d110, d111, dx00, dx01, dx10, dx11, dxy0, dxy1, dxyz;
+ show +
467
468
469
470
471
472
473
474
475
476
TotalOut = p -> nOutputs; // We need some clipping here px = fclamp(Input[0]) * p->Domain[0]; py = fclamp(Input[1]) * p->Domain[1]; pz = fclamp(Input[2]) * p->Domain[2]; x0 = (int) floor(px); fx = px - (cmsFloat32Number) x0; // We need full floor funcionality here y0 = (int) floor(py); fy = py - (cmsFloat32Number) y0;

[CVE-2023-40093_1.diff] cmsintrp.c #11
-static -void TrilinearInterp16(register const cmsUInt16Number Input[], - register cmsUInt16Number Output[], - register const cmsInterpParams* p) +static CMS_NO_SANITIZE +void TrilinearInterp16(CMSREGISTER const cmsUInt16Number Input[], + CMSREGISTER cmsUInt16Number Output[], + CMSREGISTER const cmsInterpParams* p)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
510
511
512
513
514
515
516
517
518
519
Output[OutChan] = dxyz; } # undef LERP # undef DENS } // Trilinear interpolation (16 bits) - optimized version
+ show +
520
521
522
523
static void TrilinearInterp16(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p)
+ show +
524
525
526
527
528
529
530
531
532
533
{ #define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) #define LERP(a,l,h) (cmsUInt16Number) (l + ROUND_FIXED_TO_INT(((h-l)*a))) const cmsUInt16Number* LutTable = (cmsUInt16Number*) p ->Table; int OutChan, TotalOut; cmsS15Fixed16Number fx, fy, fz; register int rx, ry, rz; int x0, y0, z0;

[CVE-2023-40093_1.diff] cmsintrp.c #12
- register int rx, ry, rz; - int x0, y0, z0; - register int X0, X1, Y0, Y1, Z0, Z1; - int d000, d001, d010, d011, - d100, d101, d110, d111, - dx00, dx01, dx10, dx11, - dxy0, dxy1, dxyz; + CMSREGISTER int rx, ry, rz; + int x0, y0, z0; + CMSREGISTER int X0, X1, Y0, Y1, Z0, Z1; + int d000, d001, d010, d011, + d100, d101, d110, d111, + dx00, dx01, dx10, dx11, + dxy0, dxy1, dxyz;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
522
523
524
525
526
527
528
529
530
531
register cmsUInt16Number Output[], register const cmsInterpParams* p) { #define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) #define LERP(a,l,h) (cmsUInt16Number) (l + ROUND_FIXED_TO_INT(((h-l)*a))) const cmsUInt16Number* LutTable = (cmsUInt16Number*) p ->Table; int OutChan, TotalOut; cmsS15Fixed16Number fx, fy, fz;
+ show +
532
533
534
535
536
537
538
register int rx, ry, rz; int x0, y0, z0; register int X0, X1, Y0, Y1, Z0, Z1; int d000, d001, d010, d011, d100, d101, d110, d111, dx00, dx01, dx10, dx11, dxy0, dxy1, dxyz;
+ show +
539
540
541
542
543
544
545
546
547
548
TotalOut = p -> nOutputs; fx = _cmsToFixedDomain((int) Input[0] * p -> Domain[0]); x0 = FIXED_TO_INT(fx); rx = FIXED_REST_TO_INT(fx); // Rest in 0..1.0 domain fy = _cmsToFixedDomain((int) Input[1] * p -> Domain[1]); y0 = FIXED_TO_INT(fy);

[CVE-2023-40093_1.diff] cmsintrp.c #16
-static -void Eval4Inputs(register const cmsUInt16Number Input[], - register cmsUInt16Number Output[], - register const cmsInterpParams* p16) +static CMS_NO_SANITIZE +void Eval4Inputs(CMSREGISTER const cmsUInt16Number Input[], + CMSREGISTER cmsUInt16Number Output[], + CMSREGISTER const cmsInterpParams* p16)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsintrp.c
824
825
826
827
828
829
830
831
832
833
c3 -= c0; Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; *Output++ = (cmsUInt16Number) c0 + ((Rest + (Rest>>16))>>16); } } } } #define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan])
+ show +
834
835
836
837
static void Eval4Inputs(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16)
+ show +
838
839
840
841
842
843
844
845
846
847
{ const cmsUInt16Number* LutTable; cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, rk; int K0, K1; cmsS15Fixed16Number fx, fy, fz; cmsS15Fixed16Number rx, ry, rz; int x0, y0, z0; cmsS15Fixed16Number X0, X1, Y0, Y1, Z0, Z1; cmsUInt32Number i;

[CVE-2023-40093_1.diff] cmstypes.c #32
- if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "nm")) goto Error; - if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#0")) goto Error; - if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#1")) goto Error; - if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#2")) goto Error; - if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#3")) goto Error; + if (!ReadCountAndString(self, io, mlu, &SizeOfTag, "nm")) goto Error; + if (!ReadCountAndString(self, io, mlu, &SizeOfTag, "#0")) goto Error; + if (!ReadCountAndString(self, io, mlu, &SizeOfTag, "#1")) goto Error; + if (!ReadCountAndString(self, io, mlu, &SizeOfTag, "#2")) goto Error; + if (!ReadCountAndString(self, io, mlu, &SizeOfTag, "#3")) goto Error;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmstypes.c
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
return TRUE; } static void *Type_CrdInfo_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsMLU* mlu = cmsMLUalloc(self ->ContextID, 5); *nItems = 0;
+ show +
3699
3700
3701
3702
3703
if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "nm")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#0")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#1")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#2")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#3")) goto Error;
+ show +
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
*nItems = 1; return (void*) mlu; Error: cmsMLUfree(mlu); return NULL; }

[CVE-2023-40093_1.diff] cmstypes.c #33
- if (!WriteCountAndSting(self, io, mlu, "nm")) goto Error; - if (!WriteCountAndSting(self, io, mlu, "#0")) goto Error; - if (!WriteCountAndSting(self, io, mlu, "#1")) goto Error; - if (!WriteCountAndSting(self, io, mlu, "#2")) goto Error; - if (!WriteCountAndSting(self, io, mlu, "#3")) goto Error; + if (!WriteCountAndString(self, io, mlu, "nm")) goto Error; + if (!WriteCountAndString(self, io, mlu, "#0")) goto Error; + if (!WriteCountAndString(self, io, mlu, "#1")) goto Error; + if (!WriteCountAndString(self, io, mlu, "#2")) goto Error; + if (!WriteCountAndString(self, io, mlu, "#3")) goto Error;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmstypes.c
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
return NULL; } static cmsBool Type_CrdInfo_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsMLU* mlu = (cmsMLU*) Ptr;
+ show +
3720
3721
3722
3723
3724
if (!WriteCountAndSting(self, io, mlu, "nm")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#0")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#1")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#2")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#3")) goto Error;
+ show +
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
return TRUE; Error: return FALSE; cmsUNUSED_PARAMETER(nItems); }

[CVE-2023-40093_1.diff] cmstypes.c #34
- case cmsSigFormulaCurveSeg: { + case cmsSigFormulaCurveSeg: { - cmsUInt16Number Type; - cmsUInt32Number ParamsByType[] = {4, 5, 5 }; + cmsUInt16Number Type; + cmsUInt32Number ParamsByType[] = { 4, 5, 5 }; - if (!_cmsReadUInt16Number(io, &Type)) goto Error; - if (!_cmsReadUInt16Number(io, NULL)) goto Error; + if (!_cmsReadUInt16Number(io, &Type)) goto Error; + if (!_cmsReadUInt16Number(io, NULL)) goto Error; - Segments[i].Type = Type + 6; - if (Type > 2) goto Error; + Segments[i].Type = Type + 6; + if (Type > 2) goto Error; - for (j=0; j < ParamsByType[Type]; j++) { + for (j = 0; j < ParamsByType[Type]; j++) { - cmsFloat32Number f; - if (!_cmsReadFloat32Number(io, &f)) goto Error; - Segments[i].Params[j] = f; - } - } - break; + cmsFloat32Number f; + if (!_cmsReadFloat32Number(io, &f)) goto Error; + Segments[i].Params[j] = f; + } + } + break; - case cmsSigSampledCurveSeg: { - cmsUInt32Number Count; + case cmsSigSampledCurveSeg: { + cmsUInt32Number Count; - if (!_cmsReadUInt32Number(io, &Count)) goto Error; + if (!_cmsReadUInt32Number(io, &Count)) goto Error; - Segments[i].nGridPoints = Count; - Segments[i].SampledPoints = (cmsFloat32Number*) _cmsCalloc(self ->ContextID, Count, sizeof(cmsFloat32Number)); - if (Segments[i].SampledPoints == NULL) goto Error; + // The first point is implicit in the last stage, we allocate an extra note to be populated latter on + Count++; + Segments[i].nGridPoints = Count; + Segments[i].SampledPoints = (cmsFloat32Number*)_cmsCalloc(self->ContextID, Count, sizeof(cmsFloat32Number)); + if (Segments[i].SampledPoints == NULL) goto Error; - for (j=0; j < Count; j++) { - if (!_cmsReadFloat32Number(io, &Segments[i].SampledPoints[j])) goto Error; - } - } - break; + Segments[i].SampledPoints[0] = 0; + for (j = 1; j < Count; j++) { + if (!_cmsReadFloat32Number(io, &Segments[i].SampledPoints[j])) goto Error; + } + } + break;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmstypes.c
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
Segments[nSegments-1].x1 = PLUS_INF; // A big cmsFloat32Number number // Read segments for (i=0; i < nSegments; i++) { if (!_cmsReadUInt32Number(io, (cmsUInt32Number*) &ElementSig)) goto Error; if (!_cmsReadUInt32Number(io, NULL)) goto Error; switch (ElementSig) {
+ show +
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
case cmsSigFormulaCurveSeg: { cmsUInt16Number Type; cmsUInt32Number ParamsByType[] = {4, 5, 5 }; if (!_cmsReadUInt16Number(io, &Type)) goto Error; if (!_cmsReadUInt16Number(io, NULL)) goto Error; Segments[i].Type = Type + 6; if (Type > 2) goto Error; for (j=0; j < ParamsByType[Type]; j++) { cmsFloat32Number f; if (!_cmsReadFloat32Number(io, &f)) goto Error; Segments[i].Params[j] = f; } } break; case cmsSigSampledCurveSeg: { cmsUInt32Number Count; if (!_cmsReadUInt32Number(io, &Count)) goto Error; Segments[i].nGridPoints = Count; Segments[i].SampledPoints = (cmsFloat32Number*) _cmsCalloc(self ->ContextID, Count, sizeof(cmsFloat32Number)); if (Segments[i].SampledPoints == NULL) goto Error; for (j=0; j < Count; j++) { if (!_cmsReadFloat32Number(io, &Segments[i].SampledPoints[j])) goto Error; } } break;
+ show +
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
default: { char String[5]; _cmsTagSignature2String(String, (cmsTagSignature) ElementSig); cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown curve element type '%s' found.", String); } goto Error;

[CVE-2023-40093_1.diff] cmspack.c #5
-cmsUInt8Number* Unroll4BytesReverse(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4BytesReverse(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
179
180
181
182
183
184
185
186
187
188
wIn[2] = FROM_8_TO_16(*accum); accum++; // Y wIn[3] = FROM_8_TO_16(*accum); accum++; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
189
190
191
192
cmsUInt8Number* Unroll4BytesReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
193
194
195
196
197
198
199
200
201
202
{ wIn[0] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // C wIn[1] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // M wIn[2] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // Y wIn[3] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #6
-cmsUInt8Number* Unroll4BytesSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4BytesSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
196
197
198
199
200
201
202
203
204
205
wIn[2] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // Y wIn[3] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
206
207
208
209
cmsUInt8Number* Unroll4BytesSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
210
211
212
213
214
215
216
217
218
219
{ wIn[3] = FROM_8_TO_16(*accum); accum++; // K wIn[0] = FROM_8_TO_16(*accum); accum++; // C wIn[1] = FROM_8_TO_16(*accum); accum++; // M wIn[2] = FROM_8_TO_16(*accum); accum++; // Y return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #7
-cmsUInt8Number* Unroll4BytesSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4BytesSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
214
215
216
217
218
219
220
221
222
223
wIn[2] = FROM_8_TO_16(*accum); accum++; // Y return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KYMC static
+ show +
224
225
226
227
cmsUInt8Number* Unroll4BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
228
229
230
231
232
233
234
235
236
237
{ wIn[3] = FROM_8_TO_16(*accum); accum++; // K wIn[2] = FROM_8_TO_16(*accum); accum++; // Y wIn[1] = FROM_8_TO_16(*accum); accum++; // M wIn[0] = FROM_8_TO_16(*accum); accum++; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #8
-cmsUInt8Number* Unroll4BytesSwapSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4BytesSwapSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
231
232
233
234
235
236
237
238
239
240
wIn[1] = FROM_8_TO_16(*accum); accum++; // M wIn[0] = FROM_8_TO_16(*accum); accum++; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
241
242
243
244
cmsUInt8Number* Unroll4BytesSwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
245
246
247
248
249
250
251
252
253
254
{ wIn[2] = FROM_8_TO_16(*accum); accum++; // K wIn[1] = FROM_8_TO_16(*accum); accum++; // Y wIn[0] = FROM_8_TO_16(*accum); accum++; // M wIn[3] = FROM_8_TO_16(*accum); accum++; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #9
-cmsUInt8Number* Unroll3Bytes(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3Bytes(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
248
249
250
251
252
253
254
255
256
257
wIn[0] = FROM_8_TO_16(*accum); accum++; // M wIn[3] = FROM_8_TO_16(*accum); accum++; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
258
259
260
261
cmsUInt8Number* Unroll3Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
262
263
264
265
266
267
268
269
270
271
{ wIn[0] = FROM_8_TO_16(*accum); accum++; // R wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[2] = FROM_8_TO_16(*accum); accum++; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #10
-cmsUInt8Number* Unroll3BytesSkip1Swap(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3BytesSkip1Swap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
264
265
266
267
268
269
270
271
272
273
wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[2] = FROM_8_TO_16(*accum); accum++; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
274
275
276
277
cmsUInt8Number* Unroll3BytesSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
278
279
280
281
282
283
284
285
286
287
{ accum++; // A wIn[2] = FROM_8_TO_16(*accum); accum++; // B wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #11
-cmsUInt8Number* Unroll3BytesSkip1SwapSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3BytesSkip1SwapSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
281
282
283
284
285
286
287
288
289
290
wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
291
292
293
294
cmsUInt8Number* Unroll3BytesSkip1SwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
295
296
297
298
299
300
301
302
303
304
{ wIn[2] = FROM_8_TO_16(*accum); accum++; // B wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R accum++; // A return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #12
-cmsUInt8Number* Unroll3BytesSkip1SwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3BytesSkip1SwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
298
299
300
301
302
303
304
305
306
307
wIn[0] = FROM_8_TO_16(*accum); accum++; // R accum++; // A return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
308
309
310
311
cmsUInt8Number* Unroll3BytesSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
312
313
314
315
316
317
318
319
320
321
{ accum++; // A wIn[0] = FROM_8_TO_16(*accum); accum++; // R wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[2] = FROM_8_TO_16(*accum); accum++; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #13
-cmsUInt8Number* Unroll3BytesSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3BytesSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
317
318
319
320
321
322
323
324
325
326
return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // BRG static
+ show +
327
328
329
330
cmsUInt8Number* Unroll3BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
331
332
333
334
335
336
337
338
339
340
{ wIn[2] = FROM_8_TO_16(*accum); accum++; // B wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #14
-cmsUInt8Number* UnrollLabV2_8(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollLabV2_8(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
333
334
335
336
337
338
339
340
341
342
wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
343
344
345
346
cmsUInt8Number* UnrollLabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
347
348
349
350
351
352
353
354
355
356
{ wIn[0] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // L wIn[1] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // a wIn[2] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #15
-cmsUInt8Number* UnrollALabV2_8(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollALabV2_8(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
349
350
351
352
353
354
355
356
357
358
wIn[1] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // a wIn[2] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
359
360
361
362
cmsUInt8Number* UnrollALabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
363
364
365
366
367
368
369
370
371
372
{ accum++; // A wIn[0] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // L wIn[1] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // a wIn[2] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #16
-cmsUInt8Number* UnrollLabV2_16(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollLabV2_16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
366
367
368
369
370
371
372
373
374
375
wIn[1] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // a wIn[2] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
376
377
378
379
cmsUInt8Number* UnrollLabV2_16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
380
381
382
383
384
385
386
387
388
389
{ wIn[0] = FomLabV2ToLabV4(*(cmsUInt16Number*) accum); accum += 2; // L wIn[1] = FomLabV2ToLabV4(*(cmsUInt16Number*) accum); accum += 2; // a wIn[2] = FomLabV2ToLabV4(*(cmsUInt16Number*) accum); accum += 2; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #17
-cmsUInt8Number* Unroll2Bytes(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll2Bytes(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
383
384
385
386
387
388
389
390
391
392
wIn[2] = FomLabV2ToLabV4(*(cmsUInt16Number*) accum); accum += 2; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // for duplex static
+ show +
393
394
395
396
cmsUInt8Number* Unroll2Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
397
398
399
400
401
402
403
404
405
406
{ wIn[0] = FROM_8_TO_16(*accum); accum++; // ch1 wIn[1] = FROM_8_TO_16(*accum); accum++; // ch2 return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #18
-cmsUInt8Number* Unroll1Byte(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll1Byte(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
402
403
404
405
406
407
408
409
410
411
cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // Monochrome duplicates L into RGB for null-transforms static
+ show +
412
413
414
415
cmsUInt8Number* Unroll1Byte(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
416
417
418
419
420
421
422
423
424
425
{ wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #19
-cmsUInt8Number* Unroll1ByteSkip1(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll1ByteSkip1(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
417
418
419
420
421
422
423
424
425
426
wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
427
428
429
430
cmsUInt8Number* Unroll1ByteSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
431
432
433
434
435
436
437
438
439
440
{ wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L accum += 1; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #20
-cmsUInt8Number* Unroll1ByteSkip2(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll1ByteSkip2(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
432
433
434
435
436
437
438
439
440
441
wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L accum += 1; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
442
443
444
445
cmsUInt8Number* Unroll1ByteSkip2(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
446
447
448
449
450
451
452
453
454
455
{ wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L accum += 2; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #21
-cmsUInt8Number* Unroll1ByteReversed(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll1ByteReversed(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
447
448
449
450
451
452
453
454
455
456
wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L accum += 2; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
457
458
459
460
cmsUInt8Number* Unroll1ByteReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
461
462
463
464
465
466
467
468
469
470
{ wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(FROM_8_TO_16(*accum)); accum++; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #22
-cmsUInt8Number* UnrollAnyWords(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollAnyWords(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
462
463
464
465
466
467
468
469
470
471
wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(FROM_8_TO_16(*accum)); accum++; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
472
473
474
475
cmsUInt8Number* UnrollAnyWords(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
476
477
478
479
480
481
482
483
484
485
{ cmsUInt32Number nChan = T_CHANNELS(info -> InputFormat); cmsUInt32Number SwapEndian = T_ENDIAN16(info -> InputFormat); cmsUInt32Number DoSwap = T_DOSWAP(info ->InputFormat); cmsUInt32Number Reverse = T_FLAVOR(info ->InputFormat); cmsUInt32Number SwapFirst = T_SWAPFIRST(info -> InputFormat); cmsUInt32Number Extra = T_EXTRA(info -> InputFormat); cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; cmsUInt32Number i;

[CVE-2023-40093_1.diff] cmspack.c #23
+ -cmsUInt8Number* UnrollPlanarWords(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollAnyWordsPremul(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride) +{ + cmsUInt32Number nChan = T_CHANNELS(info -> InputFormat); + cmsUInt32Number SwapEndian = T_ENDIAN16(info -> InputFormat); + cmsUInt32Number DoSwap = T_DOSWAP(info ->InputFormat); + cmsUInt32Number Reverse = T_FLAVOR(info ->InputFormat); + cmsUInt32Number SwapFirst = T_SWAPFIRST(info -> InputFormat); + cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; + cmsUInt32Number i; + + cmsUInt16Number alpha = (ExtraFirst ? accum[0] : accum[nChan - 1]); + cmsUInt32Number alpha_factor = _cmsToFixedDomain(FROM_8_TO_16(alpha)); + + if (ExtraFirst) { + accum += sizeof(cmsUInt16Number); + } + + for (i=0; i < nChan; i++) { + + cmsUInt32Number index = DoSwap ? (nChan - i - 1) : i; + cmsUInt32Number v = *(cmsUInt16Number*) accum; + + if (SwapEndian) + v = CHANGE_ENDIAN(v); + + if (alpha_factor > 0) { + + v = (v << 16) / alpha_factor; + if (v > 0xffff) v = 0xffff; + } + + wIn[index] = (cmsUInt16Number) (Reverse ? REVERSE_FLAVOR_16(v) : v); + + accum += sizeof(cmsUInt16Number); + } + + if (!ExtraFirst) { + accum += sizeof(cmsUInt16Number); + } + + return accum; + + cmsUNUSED_PARAMETER(Stride); +} + + + +static +cmsUInt8Number* UnrollPlanarWords(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
511
512
513
514
515
516
517
518
519
520
memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsUInt16Number)); wIn[nChan-1] = tmp; } return accum; cmsUNUSED_PARAMETER(Stride); } static
+ show +
521
522
523
524
cmsUInt8Number* UnrollPlanarWords(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
525
526
527
528
529
530
531
532
533
534
{ cmsUInt32Number nChan = T_CHANNELS(info -> InputFormat); cmsUInt32Number DoSwap= T_DOSWAP(info ->InputFormat); cmsUInt32Number Reverse= T_FLAVOR(info ->InputFormat); cmsUInt32Number SwapEndian = T_ENDIAN16(info -> InputFormat); cmsUInt32Number i; cmsUInt8Number* Init = accum; if (DoSwap) { accum += T_EXTRA(info -> InputFormat) * Stride * sizeof(cmsUInt16Number);

[CVE-2023-40093_1.diff] cmspack.c #27
-cmsUInt8Number* Unroll4WordsSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4WordsSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
579
580
581
582
583
584
585
586
587
588
wIn[2] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // Y wIn[3] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
589
590
591
592
cmsUInt8Number* Unroll4WordsSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
593
594
595
596
597
598
599
600
601
602
{ wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // K wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #28
-cmsUInt8Number* Unroll4WordsSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4WordsSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
597
598
599
600
601
602
603
604
605
606
wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KYMC static
+ show +
607
608
609
610
cmsUInt8Number* Unroll4WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
611
612
613
614
615
616
617
618
619
620
{ wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // K wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #29
-cmsUInt8Number* Unroll4WordsSwapSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll4WordsSwapSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
614
615
616
617
618
619
620
621
622
623
wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
624
625
626
627
cmsUInt8Number* Unroll4WordsSwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
628
629
630
631
632
633
634
635
636
637
{ wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // K wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // Y wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #30
-cmsUInt8Number* Unroll3Words(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3Words(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
631
632
633
634
635
636
637
638
639
640
wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
641
642
643
644
cmsUInt8Number* Unroll3Words(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
645
646
647
648
649
650
651
652
653
654
{ wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C R wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M G wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #31
-cmsUInt8Number* Unroll3WordsSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3WordsSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
647
648
649
650
651
652
653
654
655
656
wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M G wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
657
658
659
660
cmsUInt8Number* Unroll3WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
661
662
663
664
665
666
667
668
669
670
{ wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // C R wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M G wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // Y B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #32
-cmsUInt8Number* Unroll3WordsSkip1Swap(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3WordsSkip1Swap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
663
664
665
666
667
668
669
670
671
672
wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M G wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // Y B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
673
674
675
676
cmsUInt8Number* Unroll3WordsSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
677
678
679
680
681
682
683
684
685
686
{ accum += 2; // A wIn[2] = *(cmsUInt16Number*) accum; accum += 2; // R wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // G wIn[0] = *(cmsUInt16Number*) accum; accum += 2; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #33
-cmsUInt8Number* Unroll3WordsSkip1SwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll3WordsSkip1SwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
680
681
682
683
684
685
686
687
688
689
wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // G wIn[0] = *(cmsUInt16Number*) accum; accum += 2; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
690
691
692
693
cmsUInt8Number* Unroll3WordsSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
694
695
696
697
698
699
700
701
702
703
{ accum += 2; // A wIn[0] = *(cmsUInt16Number*) accum; accum += 2; // R wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // G wIn[2] = *(cmsUInt16Number*) accum; accum += 2; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #34
-cmsUInt8Number* Unroll1Word(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll1Word(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
697
698
699
700
701
702
703
704
705
706
wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // G wIn[2] = *(cmsUInt16Number*) accum; accum += 2; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
707
708
709
710
cmsUInt8Number* Unroll1Word(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
711
712
713
714
715
716
717
718
719
720
{ wIn[0] = wIn[1] = wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static

[CVE-2023-40093_1.diff] cmspack.c #35
-cmsUInt8Number* Unroll1WordReversed(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll1WordReversed(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
711
712
713
714
715
716
717
718
719
720
{ wIn[0] = wIn[1] = wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
721
722
723
724
cmsUInt8Number* Unroll1WordReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
725
726
727
728
729
730
731
732
733
734
{ wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static

[CVE-2023-40093_1.diff] cmspack.c #36
-cmsUInt8Number* Unroll1WordSkip3(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll1WordSkip3(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
725
726
727
728
729
730
731
732
733
734
{ wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
735
736
737
738
cmsUInt8Number* Unroll1WordSkip3(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
739
740
741
742
743
744
745
746
747
748
{ wIn[0] = wIn[1] = wIn[2] = *(cmsUInt16Number*) accum; accum += 8; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #37
-cmsUInt8Number* Unroll2Words(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* Unroll2Words(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
741
742
743
744
745
746
747
748
749
750
accum += 8; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
751
752
753
754
cmsUInt8Number* Unroll2Words(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
755
756
757
758
759
760
761
762
763
764
{ wIn[0] = *(cmsUInt16Number*) accum; accum += 2; // ch1 wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // ch2 return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #42
+// Return the size in bytes of a given formatter +static +cmsUInt32Number PixelSize(cmsUInt32Number Format) +{ + cmsUInt32Number fmt_bytes = T_BYTES(Format); + + // For double, the T_BYTES field is zero + if (fmt_bytes == 0) + return sizeof(cmsUInt64Number); + + // Otherwise, it is already correct for all formats + return fmt_bytes; +} + -cmsUInt8Number* UnrollDoubleTo16(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollDoubleTo16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
908
909
910
911
912
913
914
915
916
917
case PT_MCH13: case PT_MCH14: case PT_MCH15: return TRUE; default: return FALSE; } } // Inks does come in percentage, remaining cases are between 0..1.0, again to 16 bits static
+ show +
918
919
920
921
cmsUInt8Number* UnrollDoubleTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
922
923
924
925
926
927
928
929
930
931
{ cmsUInt32Number nChan = T_CHANNELS(info -> InputFormat); cmsUInt32Number DoSwap = T_DOSWAP(info ->InputFormat); cmsUInt32Number Reverse = T_FLAVOR(info ->InputFormat); cmsUInt32Number SwapFirst = T_SWAPFIRST(info -> InputFormat); cmsUInt32Number Extra = T_EXTRA(info -> InputFormat); cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; cmsUInt32Number Planar = T_PLANAR(info -> InputFormat); cmsFloat64Number v;

[CVE-2023-40093_1.diff] cmspack.c #44
+ Stride /= PixelSize(info->InputFormat); + -cmsUInt8Number* UnrollFloatTo16(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollFloatTo16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
964
965
966
967
968
969
970
971
972
973
if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsFloat64Number); else return accum + (nChan + Extra) * sizeof(cmsFloat64Number); } static
+ show +
974
975
976
977
cmsUInt8Number* UnrollFloatTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
978
979
980
981
982
983
984
985
986
987
{ cmsUInt32Number nChan = T_CHANNELS(info -> InputFormat); cmsUInt32Number DoSwap = T_DOSWAP(info ->InputFormat); cmsUInt32Number Reverse = T_FLAVOR(info ->InputFormat); cmsUInt32Number SwapFirst = T_SWAPFIRST(info -> InputFormat); cmsUInt32Number Extra = T_EXTRA(info -> InputFormat); cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; cmsUInt32Number Planar = T_PLANAR(info -> InputFormat); cmsFloat32Number v;

[CVE-2023-40093_1.diff] cmspack.c #46
+ Stride /= PixelSize(info->InputFormat); -cmsUInt8Number* UnrollDouble1Chan(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollDouble1Chan(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
return accum + sizeof(cmsFloat32Number); else return accum + (nChan + Extra) * sizeof(cmsFloat32Number); } // For 1 channel, we need to duplicate data (it comes in 0..1.0 range) static
+ show +
1032
1033
1034
1035
cmsUInt8Number* UnrollDouble1Chan(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
{ cmsFloat64Number* Inks = (cmsFloat64Number*) accum; wIn[0] = wIn[1] = wIn[2] = _cmsQuickSaturateWord(Inks[0] * 65535.0); return accum + sizeof(cmsFloat64Number); cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #63
-cmsUInt8Number* Pack6Bytes(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack6Bytes(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
*(cmsUInt16Number*) output = v; output += (Stride * sizeof(cmsUInt16Number)); } return (Init + sizeof(cmsUInt16Number)); } // CMYKcm (unrolled for speed) static
+ show +
1457
1458
1459
1460
cmsUInt8Number* Pack6Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
{ *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[4]); *output++ = FROM_16_TO_8(wOut[5]); return output;

[CVE-2023-40093_1.diff] cmspack.c #64
-cmsUInt8Number* Pack6BytesSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack6BytesSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KCMYcm static
+ show +
1478
1479
1480
1481
cmsUInt8Number* Pack6BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
{ *output++ = FROM_16_TO_8(wOut[5]); *output++ = FROM_16_TO_8(wOut[4]); *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output;

[CVE-2023-40093_1.diff] cmspack.c #65
-cmsUInt8Number* Pack6Words(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack6Words(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
*output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // CMYKcm static
+ show +
1498
1499
1500
1501
cmsUInt8Number* Pack6Words(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
{ *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[3]; output+= 2; *(cmsUInt16Number*) output = wOut[4];

[CVE-2023-40093_1.diff] cmspack.c #66
-cmsUInt8Number* Pack6WordsSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack6WordsSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KCMYcm static
+ show +
1524
1525
1526
1527
cmsUInt8Number* Pack6WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
{ *(cmsUInt16Number*) output = wOut[5]; output+= 2; *(cmsUInt16Number*) output = wOut[4]; output+= 2; *(cmsUInt16Number*) output = wOut[3]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1];

[CVE-2023-40093_1.diff] cmspack.c #67
-cmsUInt8Number* Pack4Bytes(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4Bytes(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1550
1551
1552
1553
cmsUInt8Number* Pack4Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
{ *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[3]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #68
-cmsUInt8Number* Pack4BytesReverse(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4BytesReverse(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
*output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[3]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1567
1568
1569
1570
cmsUInt8Number* Pack4BytesReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
{ *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[0])); *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[1])); *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[2])); *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[3])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #69
-cmsUInt8Number* Pack4BytesSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4BytesSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
*output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[3])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1585
1586
1587
1588
cmsUInt8Number* Pack4BytesSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
{ *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #70
-cmsUInt8Number* Pack4BytesSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4BytesSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
*output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // ABGR static
+ show +
1603
1604
1605
1606
cmsUInt8Number* Pack4BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
{ *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #71
-cmsUInt8Number* Pack4BytesSwapSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4BytesSwapSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
*output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1620
1621
1622
1623
cmsUInt8Number* Pack4BytesSwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
{ *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[3]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #72
-cmsUInt8Number* Pack4Words(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4Words(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
*output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[3]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1637
1638
1639
1640
cmsUInt8Number* Pack4Words(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
{ *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[3]; output+= 2;

[CVE-2023-40093_1.diff] cmspack.c #73
-cmsUInt8Number* Pack4WordsReverse(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4WordsReverse(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
*(cmsUInt16Number*) output = wOut[3]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1658
1659
1660
1661
cmsUInt8Number* Pack4WordsReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
{ *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[0]); output+= 2; *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[1]); output+= 2; *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[2]); output+= 2; *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[3]); output+= 2;

[CVE-2023-40093_1.diff] cmspack.c #74
-cmsUInt8Number* Pack4WordsSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4WordsSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // ABGR static
+ show +
1680
1681
1682
1683
cmsUInt8Number* Pack4WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
{ *(cmsUInt16Number*) output = wOut[3]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2;

[CVE-2023-40093_1.diff] cmspack.c #75
-cmsUInt8Number* Pack4WordsBigEndian(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack4WordsBigEndian(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // CMYK static
+ show +
1702
1703
1704
1705
cmsUInt8Number* Pack4WordsBigEndian(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
{ *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[0]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[1]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[2]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[3]); output+= 2;

[CVE-2023-40093_1.diff] cmspack.c #76
-cmsUInt8Number* PackLabV2_8(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackLabV2_8(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1724
1725
1726
1727
cmsUInt8Number* PackLabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
{ *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[0])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[1])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[2])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #77
-cmsUInt8Number* PackALabV2_8(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackALabV2_8(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
*output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[1])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[2])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1740
1741
1742
1743
cmsUInt8Number* PackALabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
{ output++; *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[0])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[1])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[2])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #78
-cmsUInt8Number* PackLabV2_16(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackLabV2_16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
*output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[1])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[2])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1757
1758
1759
1760
cmsUInt8Number* PackLabV2_16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
{ *(cmsUInt16Number*) output = FomLabV4ToLabV2(wOut[0]); output += 2; *(cmsUInt16Number*) output = FomLabV4ToLabV2(wOut[1]); output += 2; *(cmsUInt16Number*) output = FomLabV4ToLabV2(wOut[2]); output += 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #79
-cmsUInt8Number* Pack3Bytes(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3Bytes(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
*(cmsUInt16Number*) output = FomLabV4ToLabV2(wOut[2]); output += 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1776
1777
1778
1779
cmsUInt8Number* Pack3Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
{ *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #80
-cmsUInt8Number* Pack3BytesOptimized(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesOptimized(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
*output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1792
1793
1794
1795
cmsUInt8Number* Pack3BytesOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
{ *output++ = (wOut[0] & 0xFFU); *output++ = (wOut[1] & 0xFFU); *output++ = (wOut[2] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #81
-cmsUInt8Number* Pack3BytesSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
*output++ = (wOut[1] & 0xFFU); *output++ = (wOut[2] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1808
1809
1810
1811
cmsUInt8Number* Pack3BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
{ *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #82
-cmsUInt8Number* Pack3BytesSwapOptimized(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesSwapOptimized(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
*output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1824
1825
1826
1827
cmsUInt8Number* Pack3BytesSwapOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
{ *output++ = (wOut[2] & 0xFFU); *output++ = (wOut[1] & 0xFFU); *output++ = (wOut[0] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #83
-cmsUInt8Number* Pack3Words(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3Words(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
*output++ = (wOut[0] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1841
1842
1843
1844
cmsUInt8Number* Pack3Words(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
{ *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #84
-cmsUInt8Number* Pack3WordsSwap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3WordsSwap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
*(cmsUInt16Number*) output = wOut[2]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1860
1861
1862
1863
cmsUInt8Number* Pack3WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
{ *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #85
-cmsUInt8Number* Pack3WordsBigEndian(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3WordsBigEndian(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
*(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1879
1880
1881
1882
cmsUInt8Number* Pack3WordsBigEndian(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
{ *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[0]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[1]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[2]); output+= 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #86
-cmsUInt8Number* Pack3BytesAndSkip1(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
*(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[2]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1898
1899
1900
1901
cmsUInt8Number* Pack3BytesAndSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
{ *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #87
-cmsUInt8Number* Pack3BytesAndSkip1Optimized(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1Optimized(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
*output++ = FROM_16_TO_8(wOut[2]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1915
1916
1917
1918
cmsUInt8Number* Pack3BytesAndSkip1Optimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
{ *output++ = (wOut[0] & 0xFFU); *output++ = (wOut[1] & 0xFFU); *output++ = (wOut[2] & 0xFFU); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #88
-cmsUInt8Number* Pack3BytesAndSkip1SwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1SwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1933
1934
1935
1936
cmsUInt8Number* Pack3BytesAndSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
{ output++; *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #89
-cmsUInt8Number* Pack3BytesAndSkip1SwapFirstOptimized(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1SwapFirstOptimized(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
*output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1950
1951
1952
1953
cmsUInt8Number* Pack3BytesAndSkip1SwapFirstOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
{ output++; *output++ = (wOut[0] & 0xFFU); *output++ = (wOut[1] & 0xFFU); *output++ = (wOut[2] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #90
-cmsUInt8Number* Pack3BytesAndSkip1Swap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1Swap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
*output++ = (wOut[1] & 0xFFU); *output++ = (wOut[2] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1967
1968
1969
1970
cmsUInt8Number* Pack3BytesAndSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
{ output++; *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #91
-cmsUInt8Number* Pack3BytesAndSkip1SwapOptimized(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1SwapOptimized(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
*output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
1984
1985
1986
1987
cmsUInt8Number* Pack3BytesAndSkip1SwapOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
{ output++; *output++ = (wOut[2] & 0xFFU); *output++ = (wOut[1] & 0xFFU); *output++ = (wOut[0] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #92
-cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
*output++ = (wOut[0] & 0xFFU); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2002
2003
2004
2005
cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
{ *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #93
-cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirstOptimized(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirstOptimized(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
*output++ = FROM_16_TO_8(wOut[0]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2019
2020
2021
2022
cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirstOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
{ *output++ = (wOut[2] & 0xFFU); *output++ = (wOut[1] & 0xFFU); *output++ = (wOut[0] & 0xFFU); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride);

[CVE-2023-40093_1.diff] cmspack.c #94
-cmsUInt8Number* Pack3WordsAndSkip1(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3WordsAndSkip1(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
*output++ = (wOut[0] & 0xFFU); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2036
2037
2038
2039
cmsUInt8Number* Pack3WordsAndSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
{ *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; output+= 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #95
-cmsUInt8Number* Pack3WordsAndSkip1Swap(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3WordsAndSkip1Swap(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
output+= 2; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2056
2057
2058
2059
cmsUInt8Number* Pack3WordsAndSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
{ output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #96
-cmsUInt8Number* Pack3WordsAndSkip1SwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3WordsAndSkip1SwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2077
2078
2079
2080
cmsUInt8Number* Pack3WordsAndSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
{ output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #97
-cmsUInt8Number* Pack3WordsAndSkip1SwapSwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack3WordsAndSkip1SwapSwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2098
2099
2100
2101
cmsUInt8Number* Pack3WordsAndSkip1SwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
{ *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; output+= 2; return output;

[CVE-2023-40093_1.diff] cmspack.c #98
-cmsUInt8Number* Pack1Byte(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1Byte(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2120
2121
2122
2123
cmsUInt8Number* Pack1Byte(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
{ *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #99
-cmsUInt8Number* Pack1ByteReversed(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1ByteReversed(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
*output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2135
2136
2137
2138
cmsUInt8Number* Pack1ByteReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
{ *output++ = FROM_16_TO_8(REVERSE_FLAVOR_16(wOut[0])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #100
-cmsUInt8Number* Pack1ByteSkip1(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1ByteSkip1(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
*output++ = FROM_16_TO_8(REVERSE_FLAVOR_16(wOut[0])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2150
2151
2152
2153
cmsUInt8Number* Pack1ByteSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
{ *output++ = FROM_16_TO_8(wOut[0]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #101
-cmsUInt8Number* Pack1ByteSkip1SwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1ByteSkip1SwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2166
2167
2168
2169
cmsUInt8Number* Pack1ByteSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
{ output++; *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #102
-cmsUInt8Number* Pack1Word(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1Word(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
output++; *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2181
2182
2183
2184
cmsUInt8Number* Pack1Word(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
{ *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #103
-cmsUInt8Number* Pack1WordReversed(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1WordReversed(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2197
2198
2199
2200
cmsUInt8Number* Pack1WordReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
{ *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[0]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #104
-cmsUInt8Number* Pack1WordBigEndian(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1WordBigEndian(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
*(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[0]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2212
2213
2214
2215
cmsUInt8Number* Pack1WordBigEndian(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
{ *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[0]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #105
-cmsUInt8Number* Pack1WordSkip1(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1WordSkip1(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2228
2229
2230
2231
cmsUInt8Number* Pack1WordSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
{ *(cmsUInt16Number*) output = wOut[0]; output+= 4; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #106
-cmsUInt8Number* Pack1WordSkip1SwapFirst(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* Pack1WordSkip1SwapFirst(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
*(cmsUInt16Number*) output = wOut[0]; output+= 4; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static
+ show +
2243
2244
2245
2246
cmsUInt8Number* Pack1WordSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
{ output += 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); }

[CVE-2023-40093_1.diff] cmspack.c #107
-cmsUInt8Number* PackLabDoubleFrom16(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackLabDoubleFrom16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // Unencoded Float values -- don't try optimize speed static
+ show +
2261
2262
2263
2264
cmsUInt8Number* PackLabDoubleFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
{ if (T_PLANAR(info -> OutputFormat)) { cmsCIELab Lab; cmsFloat64Number* Out = (cmsFloat64Number*) output; cmsLabEncoded2Float(&Lab, wOut); Out[0] = Lab.L; Out[Stride] = Lab.a;

[CVE-2023-40093_1.diff] cmspack.c #108
-cmsUInt8Number* PackLabFloatFrom16(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackLabFloatFrom16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
} else { cmsLabEncoded2Float((cmsCIELab*) output, wOut); return output + (sizeof(cmsCIELab) + T_EXTRA(info ->OutputFormat) * sizeof(cmsFloat64Number)); } } static
+ show +
2288
2289
2290
2291
cmsUInt8Number* PackLabFloatFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
{ cmsCIELab Lab; cmsLabEncoded2Float(&Lab, wOut); if (T_PLANAR(info -> OutputFormat)) { cmsFloat32Number* Out = (cmsFloat32Number*) output; Out[0] = (cmsFloat32Number)Lab.L; Out[Stride] = (cmsFloat32Number)Lab.a;

[CVE-2023-40093_1.diff] cmspack.c #110
+ Stride /= PixelSize(info->OutputFormat); + -cmsUInt8Number* PackXYZDoubleFrom16(register _cmsTRANSFORM* Info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackXYZDoubleFrom16(CMSREGISTER _cmsTRANSFORM* Info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
((cmsFloat32Number*) output)[0] = (cmsFloat32Number) Lab.L; ((cmsFloat32Number*) output)[1] = (cmsFloat32Number) Lab.a; ((cmsFloat32Number*) output)[2] = (cmsFloat32Number) Lab.b; return output + (3 + T_EXTRA(info ->OutputFormat)) * sizeof(cmsFloat32Number); } } static
+ show +
2317
2318
2319
2320
cmsUInt8Number* PackXYZDoubleFrom16(register _cmsTRANSFORM* Info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
{ if (T_PLANAR(Info -> OutputFormat)) { cmsCIEXYZ XYZ; cmsFloat64Number* Out = (cmsFloat64Number*) output; cmsXYZEncoded2Float(&XYZ, wOut); Out[0] = XYZ.X; Out[Stride] = XYZ.Y; Out[Stride*2] = XYZ.Z;

[CVE-2023-40093_1.diff] cmspack.c #112
+ Stride /= PixelSize(Info->OutputFormat); + -cmsUInt8Number* PackXYZFloatFrom16(register _cmsTRANSFORM* Info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackXYZFloatFrom16(CMSREGISTER _cmsTRANSFORM* Info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
} else { cmsXYZEncoded2Float((cmsCIEXYZ*) output, wOut); return output + (sizeof(cmsCIEXYZ) + T_EXTRA(Info ->OutputFormat) * sizeof(cmsFloat64Number)); } } static
+ show +
2344
2345
2346
2347
cmsUInt8Number* PackXYZFloatFrom16(register _cmsTRANSFORM* Info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
{ if (T_PLANAR(Info -> OutputFormat)) { cmsCIEXYZ XYZ; cmsFloat32Number* Out = (cmsFloat32Number*) output; cmsXYZEncoded2Float(&XYZ, wOut); Out[0] = (cmsFloat32Number) XYZ.X; Out[Stride] = (cmsFloat32Number) XYZ.Y; Out[Stride*2] = (cmsFloat32Number) XYZ.Z;

[CVE-2023-40093_1.diff] cmspack.c #114
+ Stride /= PixelSize(Info->OutputFormat); + -cmsUInt8Number* PackDoubleFrom16(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackDoubleFrom16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
Out[0] = (cmsFloat32Number) XYZ.X; Out[1] = (cmsFloat32Number) XYZ.Y; Out[2] = (cmsFloat32Number) XYZ.Z; return output + (3 * sizeof(cmsFloat32Number) + T_EXTRA(Info ->OutputFormat) * sizeof(cmsFloat32Number)); } } static
+ show +
2377
2378
2379
2380
cmsUInt8Number* PackDoubleFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
{ cmsUInt32Number nChan = T_CHANNELS(info -> OutputFormat); cmsUInt32Number DoSwap = T_DOSWAP(info ->OutputFormat); cmsUInt32Number Reverse = T_FLAVOR(info ->OutputFormat); cmsUInt32Number Extra = T_EXTRA(info -> OutputFormat); cmsUInt32Number SwapFirst = T_SWAPFIRST(info -> OutputFormat); cmsUInt32Number Planar = T_PLANAR(info -> OutputFormat); cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; cmsFloat64Number maximum = IsInkSpace(info ->OutputFormat) ? 655.35 : 65535.0; cmsFloat64Number v = 0;

[CVE-2023-40093_1.diff] cmspack.c #116
+ Stride /= PixelSize(info->OutputFormat); + -cmsUInt8Number* PackFloatFrom16(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackFloatFrom16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
if (T_PLANAR(info -> OutputFormat)) return output + sizeof(cmsFloat64Number); else return output + (nChan + Extra) * sizeof(cmsFloat64Number); } static
+ show +
2428
2429
2430
2431
cmsUInt8Number* PackFloatFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
{ cmsUInt32Number nChan = T_CHANNELS(info->OutputFormat); cmsUInt32Number DoSwap = T_DOSWAP(info->OutputFormat); cmsUInt32Number Reverse = T_FLAVOR(info->OutputFormat); cmsUInt32Number Extra = T_EXTRA(info->OutputFormat); cmsUInt32Number SwapFirst = T_SWAPFIRST(info->OutputFormat); cmsUInt32Number Planar = T_PLANAR(info->OutputFormat); cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; cmsFloat64Number maximum = IsInkSpace(info->OutputFormat) ? 655.35 : 65535.0; cmsFloat64Number v = 0;

[CVE-2023-40093_1.diff] cmspack.c #125
+ Stride /= PixelSize(Info->OutputFormat); + + Stride /= PixelSize(Info->OutputFormat); + + Stride /= PixelSize(Info->OutputFormat); + + Stride /= PixelSize(Info->OutputFormat); + -cmsUInt8Number* UnrollHalfTo16(register _cmsTRANSFORM* info, - register cmsUInt16Number wIn[], - register cmsUInt8Number* accum, - register cmsUInt32Number Stride) +cmsUInt8Number* UnrollHalfTo16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wIn[], + CMSREGISTER cmsUInt8Number* accum, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
} // ---------------------------------------------------------------------------------------------------------------- #ifndef CMS_NO_HALF_SUPPORT // Decodes an stream of half floats to wIn[] described by input format static
+ show +
2703
2704
2705
2706
cmsUInt8Number* UnrollHalfTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride)
+ show +
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
{ cmsUInt32Number nChan = T_CHANNELS(info -> InputFormat); cmsUInt32Number DoSwap = T_DOSWAP(info ->InputFormat); cmsUInt32Number Reverse = T_FLAVOR(info ->InputFormat); cmsUInt32Number SwapFirst = T_SWAPFIRST(info -> InputFormat); cmsUInt32Number Extra = T_EXTRA(info -> InputFormat); cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; cmsUInt32Number Planar = T_PLANAR(info -> InputFormat); cmsFloat32Number v;

[CVE-2023-40093_1.diff] cmspack.c #129
+ Stride /= PixelSize(info->OutputFormat); -cmsUInt8Number* PackHalfFrom16(register _cmsTRANSFORM* info, - register cmsUInt16Number wOut[], - register cmsUInt8Number* output, - register cmsUInt32Number Stride) +cmsUInt8Number* PackHalfFrom16(CMSREGISTER _cmsTRANSFORM* info, + CMSREGISTER cmsUInt16Number wOut[], + CMSREGISTER cmsUInt8Number* output, + CMSREGISTER cmsUInt32Number Stride)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
} if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsUInt16Number); else return accum + (nChan + Extra) * sizeof(cmsUInt16Number); } static
+ show +
2806
2807
2808
2809
cmsUInt8Number* PackHalfFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride)
+ show +
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
{ cmsUInt32Number nChan = T_CHANNELS(info->OutputFormat); cmsUInt32Number DoSwap = T_DOSWAP(info->OutputFormat); cmsUInt32Number Reverse = T_FLAVOR(info->OutputFormat); cmsUInt32Number Extra = T_EXTRA(info->OutputFormat); cmsUInt32Number SwapFirst = T_SWAPFIRST(info->OutputFormat); cmsUInt32Number Planar = T_PLANAR(info->OutputFormat); cmsUInt32Number ExtraFirst = DoSwap ^ SwapFirst; cmsFloat32Number maximum = IsInkSpace(info->OutputFormat) ? 655.35F : 65535.0F; cmsFloat32Number v = 0;

[CVE-2023-40093_1.diff] cmspack.c #137
-cmsFormatter _cmsGetFormatter(cmsContext ContextID, - cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8 - cmsFormatterDirection Dir, - cmsUInt32Number dwFlags) +cmsFormatter CMSEXPORT _cmsGetFormatter(cmsContext ContextID, + cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8 + cmsFormatterDirection Dir, + cmsUInt32Number dwFlags) + if (T_CHANNELS(Type) == 0) { + static const cmsFormatter nullFormatter = { 0 }; + return nullFormatter; + } +
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmspack.c
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
if (fl == NULL) return FALSE; fl ->Factory = Plugin ->FormattersFactory; fl ->Next = ctx -> FactoryList; ctx ->FactoryList = fl; return TRUE; }
+ show +
3291
3292
3293
3294
cmsFormatter _cmsGetFormatter(cmsContext ContextID, cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8 cmsFormatterDirection Dir, cmsUInt32Number dwFlags)
+ show +
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
{ _cmsFormattersPluginChunkType* ctx = ( _cmsFormattersPluginChunkType*) _cmsContextGetClientChunk(ContextID, FormattersPlugin); cmsFormattersFactoryList* f; for (f =ctx->FactoryList; f != NULL; f = f ->Next) { cmsFormatter fn = f ->Factory(Type, Dir, dwFlags); if (fn.Fmt16 != NULL) return fn; }

[CVE-2023-40093_1.diff] cmsio0.c #18
+ + for (i = 0; i < Icc->TagCount; i++) { + for (j = 0; j < Icc->TagCount; j++) { + + // Tags cannot be duplicate + if ((i != j) && (Icc->TagNames[i] == Icc->TagNames[j])) { + cmsSignalError(Icc->ContextID, cmsERROR_RANGE, "Duplicate tag found"); + return FALSE; + } + + } + } + - cmsUInt32Number TagSize = FileOrig -> TagSizes[i]; - cmsUInt32Number TagOffset = FileOrig -> TagOffsets[i]; - void* Mem; + if (FileOrig->IOhandler != NULL) + { + cmsUInt32Number TagSize = FileOrig->TagSizes[i]; + cmsUInt32Number TagOffset = FileOrig->TagOffsets[i]; + void* Mem; - if (!FileOrig ->IOhandler->Seek(FileOrig ->IOhandler, TagOffset)) return FALSE; + if (!FileOrig->IOhandler->Seek(FileOrig->IOhandler, TagOffset)) return FALSE; - Mem = _cmsMalloc(Icc ->ContextID, TagSize); - if (Mem == NULL) return FALSE; + Mem = _cmsMalloc(Icc->ContextID, TagSize); + if (Mem == NULL) return FALSE; - if (FileOrig ->IOhandler->Read(FileOrig->IOhandler, Mem, TagSize, 1) != 1) return FALSE; - if (!io ->Write(io, TagSize, Mem)) return FALSE; - _cmsFree(Icc ->ContextID, Mem); + if (FileOrig->IOhandler->Read(FileOrig->IOhandler, Mem, TagSize, 1) != 1) return FALSE; + if (!io->Write(io, TagSize, Mem)) return FALSE; + _cmsFree(Icc->ContextID, Mem); - Icc -> TagSizes[i] = (io ->UsedSpace - Begin); + Icc->TagSizes[i] = (io->UsedSpace - Begin); - // Align to 32 bit boundary. - if (! _cmsWriteAlignment(io)) - return FALSE; + // Align to 32 bit boundary. + if (!_cmsWriteAlignment(io)) + return FALSE; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsio0.c
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
Icc -> TagOffsets[i] = Begin = io ->UsedSpace; Data = (cmsUInt8Number*) Icc -> TagPtrs[i]; if (!Data) { // Reach here if we are copying a tag from a disk-based ICC profile which has not been modified by user. // In this case a blind copy of the block data is performed if (FileOrig != NULL && Icc -> TagOffsets[i]) {
+ show +
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
cmsUInt32Number TagSize = FileOrig -> TagSizes[i]; cmsUInt32Number TagOffset = FileOrig -> TagOffsets[i]; void* Mem; if (!FileOrig ->IOhandler->Seek(FileOrig ->IOhandler, TagOffset)) return FALSE; Mem = _cmsMalloc(Icc ->ContextID, TagSize); if (Mem == NULL) return FALSE; if (FileOrig ->IOhandler->Read(FileOrig->IOhandler, Mem, TagSize, 1) != 1) return FALSE; if (!io ->Write(io, TagSize, Mem)) return FALSE; _cmsFree(Icc ->ContextID, Mem); Icc -> TagSizes[i] = (io ->UsedSpace - Begin); // Align to 32 bit boundary. if (! _cmsWriteAlignment(io)) return FALSE;
+ show +
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
} continue; } // Should this tag be saved as RAW? If so, tagsizes should be specified in advance (no further cooking is done) if (Icc ->TagSaveAsRaw[i]) { if (io -> Write(io, Icc ->TagSizes[i], Data) != 1) return FALSE;

[CVE-2023-40093_1.diff] cmsio0.c #20
+// Free one tag contents +static +void freeOneTag(_cmsICCPROFILE* Icc, cmsUInt32Number i) +{ + if (Icc->TagPtrs[i]) { + cmsTagTypeHandler* TypeHandler = Icc->TagTypeHandlers[i]; + + if (TypeHandler != NULL) { + cmsTagTypeHandler LocalTypeHandler = *TypeHandler; + + LocalTypeHandler.ContextID = Icc->ContextID; + LocalTypeHandler.ICCVersion = Icc->Version; + LocalTypeHandler.FreePtr(&LocalTypeHandler, Icc->TagPtrs[i]); + } + else + _cmsFree(Icc->ContextID, Icc->TagPtrs[i]); + } +} - if (Icc -> TagPtrs[i]) { - - cmsTagTypeHandler* TypeHandler = Icc ->TagTypeHandlers[i]; - - if (TypeHandler != NULL) { - cmsTagTypeHandler LocalTypeHandler = *TypeHandler; - - LocalTypeHandler.ContextID = Icc ->ContextID; // As an additional parameters - LocalTypeHandler.ICCVersion = Icc ->Version; - LocalTypeHandler.FreePtr(&LocalTypeHandler, Icc -> TagPtrs[i]); - } - else - _cmsFree(Icc ->ContextID, Icc ->TagPtrs[i]); - } + freeOneTag(Icc, i);
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsio0.c
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
// Was open in write mode? if (Icc ->IsWrite) { Icc ->IsWrite = FALSE; // Assure no further writing rc &= cmsSaveProfileToFile(hProfile, Icc ->IOhandler->PhysicalFile); } for (i=0; i < Icc -> TagCount; i++) {
+ show +
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
if (Icc -> TagPtrs[i]) { cmsTagTypeHandler* TypeHandler = Icc ->TagTypeHandlers[i]; if (TypeHandler != NULL) { cmsTagTypeHandler LocalTypeHandler = *TypeHandler; LocalTypeHandler.ContextID = Icc ->ContextID; // As an additional parameters LocalTypeHandler.ICCVersion = Icc ->Version; LocalTypeHandler.FreePtr(&LocalTypeHandler, Icc -> TagPtrs[i]); } else _cmsFree(Icc ->ContextID, Icc ->TagPtrs[i]);
+ show +
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
} } if (Icc ->IOhandler != NULL) { rc &= cmsCloseIOhandler(Icc->IOhandler); } _cmsDestroyMutex(Icc->ContextID, Icc->UsrMutex); _cmsFree(Icc ->ContextID, Icc); // Free placeholder memory

[CVE-2023-40093_1.diff] cmswtpnt.c #2
- // Obtain y(x) - y = -3.000*(x*x) + 2.870*x - 0.275; + // Obtain y(x) + y = -3.000*(x*x) + 2.870*x - 0.275; - // wave factors (not used, but here for futures extensions) + // wave factors (not used, but here for futures extensions) - // M1 = (-1.3515 - 1.7703*x + 5.9114 *y)/(0.0241 + 0.2562*x - 0.7341*y); - // M2 = (0.0300 - 31.4424*x + 30.0717*y)/(0.0241 + 0.2562*x - 0.7341*y); + // M1 = (-1.3515 - 1.7703*x + 5.9114 *y)/(0.0241 + 0.2562*x - 0.7341*y); + // M2 = (0.0300 - 31.4424*x + 30.0717*y)/(0.0241 + 0.2562*x - 0.7341*y); - WhitePoint -> x = x; - WhitePoint -> y = y; - WhitePoint -> Y = 1.0; + WhitePoint -> x = x; + WhitePoint -> y = y; + WhitePoint -> Y = 1.0; - return TRUE; + return TRUE;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmswtpnt.c
69
70
71
72
73
74
75
76
77
78
if (T > 7000.0 && T <= 25000.0) { x = -2.0064*(1E9/T3) + 1.9018*(1E6/T2) + 0.24748*(1E3/T) + 0.237040; } else { cmsSignalError(0, cmsERROR_RANGE, "cmsWhitePointFromTemp: invalid temp"); return FALSE; } // Obtain y(x)
+ show +
79
80
81
82
83
84
85
86
87
88
89
90
y = -3.000*(x*x) + 2.870*x - 0.275; // wave factors (not used, but here for futures extensions) // M1 = (-1.3515 - 1.7703*x + 5.9114 *y)/(0.0241 + 0.2562*x - 0.7341*y); // M2 = (0.0300 - 31.4424*x + 30.0717*y)/(0.0241 + 0.2562*x - 0.7341*y); WhitePoint -> x = x; WhitePoint -> y = y; WhitePoint -> Y = 1.0; return TRUE;
+ show +
91
92
93
94
95
96
97
98
99
100
} typedef struct { cmsFloat64Number mirek; // temp (in microreciprocal kelvin) cmsFloat64Number ut; // u coord of intersection w/ blackbody locus cmsFloat64Number vt; // v coord of intersection w/ blackbody locus cmsFloat64Number tt; // slope of ISOTEMPERATURE. line

[CVE-2023-40093_1.diff] cmscgats.c #13
- idptr = it8->str; - sng = it8->ch; - k = 0; - NextCh(it8); - - while (k < (MAXSTR-1) && it8->ch != sng) { - - if (it8->ch == '\n'|| it8->ch == '\r') k = MAXSTR+1; - else { - *idptr++ = (char) it8->ch; - NextCh(it8); - k++; - } - } - - it8->sy = SSTRING; - *idptr = '\0'; - NextCh(it8); + InStringSymbol(it8); + it8->sy = SEOF;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmscgats.c
868
869
870
871
872
873
874
875
876
877
NextCh(it8); while (it8->ch && it8->ch != '\n' && it8->ch != '\r') NextCh(it8); it8->sy = SCOMMENT; break; // String. case '\'': case '\"':
+ show +
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
idptr = it8->str; sng = it8->ch; k = 0; NextCh(it8); while (k < (MAXSTR-1) && it8->ch != sng) { if (it8->ch == '\n'|| it8->ch == '\r') k = MAXSTR+1; else { *idptr++ = (char) it8->ch; NextCh(it8); k++; } } it8->sy = SSTRING; *idptr = '\0'; NextCh(it8);
+ show +
896
897
898
899
900
901
902
903
904
905
break; default: SynError(it8, "Unrecognized character: 0x%x", it8 ->ch); return; } } while (it8->sy == SCOMMENT);

[CVE-2023-40093_1.diff] cmscgats.c #35
- t -> SampleID = idField; - - for (i=0; i < t -> nPatches; i++) { - - char *Data = GetData(it8, i, idField); - if (Data) { - char Buffer[256]; - - strncpy(Buffer, Data, 255); - Buffer[255] = 0; - - if (strlen(Buffer) <= strlen(Data)) - strcpy(Data, Buffer); - else - SetData(it8, i, idField, Buffer); - - } - } - + t -> SampleID = idField; - if ((cmsstrcasecmp(Fld, "LABEL") == 0) || Fld[0] == '$' ) { + if ((cmsstrcasecmp(Fld, "LABEL") == 0) || Fld[0] == '$') { - // Search for table references... - for (i=0; i < t -> nPatches; i++) { + // Search for table references... + for (i = 0; i < t->nPatches; i++) { - char *Label = GetData(it8, i, idField); + char* Label = GetData(it8, i, idField); - if (Label) { + if (Label) { - cmsUInt32Number k; + cmsUInt32Number k; - // This is the label, search for a table containing - // this property + // This is the label, search for a table containing + // this property - for (k=0; k < it8 ->TablesCount; k++) { + for (k = 0; k < it8->TablesCount; k++) { - TABLE* Table = it8 ->Tab + k; - KEYVALUE* p; + TABLE* Table = it8->Tab + k; + KEYVALUE* p; - if (IsAvailableOnList(Table->HeaderList, Label, NULL, &p)) { + if (IsAvailableOnList(Table->HeaderList, Label, NULL, &p)) { - // Available, keep type and table - char Buffer[256]; + // Available, keep type and table + char Buffer[256]; - char *Type = p ->Value; - int nTable = (int) k; + char* Type = p->Value; + int nTable = (int)k; - snprintf(Buffer, 255, "%s %d %s", Label, nTable, Type ); + snprintf(Buffer, 255, "%s %d %s", Label, nTable, Type); - SetData(it8, i, idField, Buffer); - } - } + SetData(it8, i, idField, Buffer); + } + } - } + } - } + } - } + } - } - } + } + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmscgats.c
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
SynError(it8, "Undefined DATA_FORMAT"); return; } Fld = t->DataFormat[idField]; if (!Fld) continue; if (cmsstrcasecmp(Fld, "SAMPLE_ID") == 0) {
+ show +
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
t -> SampleID = idField; for (i=0; i < t -> nPatches; i++) { char *Data = GetData(it8, i, idField); if (Data) { char Buffer[256]; strncpy(Buffer, Data, 255); Buffer[255] = 0; if (strlen(Buffer) <= strlen(Data)) strcpy(Data, Buffer); else SetData(it8, i, idField, Buffer); } } } // "LABEL" is an extension. It keeps references to forward tables if ((cmsstrcasecmp(Fld, "LABEL") == 0) || Fld[0] == '$' ) { // Search for table references... for (i=0; i < t -> nPatches; i++) { char *Label = GetData(it8, i, idField); if (Label) { cmsUInt32Number k; // This is the label, search for a table containing // this property for (k=0; k < it8 ->TablesCount; k++) { TABLE* Table = it8 ->Tab + k; KEYVALUE* p; if (IsAvailableOnList(Table->HeaderList, Label, NULL, &p)) { // Available, keep type and table char Buffer[256]; char *Type = p ->Value; int nTable = (int) k; snprintf(Buffer, 255, "%s %d %s", Label, nTable, Type ); SetData(it8, i, idField, Buffer);
+ show +
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
} } } } }

[CVE-2023-40093_1.diff] cmscgats.c #37
+ if (it8->MemoryBlock == NULL) + { + cmsIT8Free(hIT8); + return FALSE; + } - Props = (char **) AllocChunk(it8, sizeof(char *) * n); + Props = (char**)AllocChunk(it8, sizeof(char*) * n); + if (Props != NULL) { - // Pass#2 - Fill pointers - n = 0; - for (p = t -> HeaderList; p != NULL; p = p->Next) { - Props[n++] = p -> Keyword; - } + // Pass#2 - Fill pointers + n = 0; + for (p = t->HeaderList; p != NULL; p = p->Next) { + Props[n++] = p->Keyword; + } - *PropertyNames = Props; + } + *PropertyNames = Props; +
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmscgats.c
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
t = GetTable(it8); // Pass#1 - count properties n = 0; for (p = t -> HeaderList; p != NULL; p = p->Next) { n++; }
+ show +
2433
2434
2435
2436
2437
2438
2439
2440
2441
Props = (char **) AllocChunk(it8, sizeof(char *) * n); // Pass#2 - Fill pointers n = 0; for (p = t -> HeaderList; p != NULL; p = p->Next) { Props[n++] = p -> Keyword; } *PropertyNames = Props;
+ show +
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
return n; } cmsUInt32Number CMSEXPORT cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char* cProp, const char ***SubpropertyNames) { cmsIT8* it8 = (cmsIT8*) hIT8; KEYVALUE *p, *tmp; cmsUInt32Number n; const char **Props; TABLE* t;

[CVE-2023-40093_1.diff] cmscgats.c #38
+ if (Props != NULL) { - // Pass#2 - Fill pointers - n = 0; - for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { - if(tmp->Subkey != NULL) - Props[n++] = p ->Subkey; + // Pass#2 - Fill pointers + n = 0; + for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { + if (tmp->Subkey != NULL) + Props[n++] = p->Subkey; + }
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmscgats.c
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
n = 0; for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { if(tmp->Subkey != NULL) n++; } Props = (const char **) AllocChunk(it8, sizeof(char *) * n); // Pass#2 - Fill pointers
+ show +
2475
2476
2477
2478
n = 0; for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { if(tmp->Subkey != NULL) Props[n++] = p ->Subkey;
+ show +
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
} *SubpropertyNames = Props; return n; } static int LocatePatch(cmsIT8* it8, const char* cPatch) { int i;

[CVE-2023-40093_1.diff] cmsps2.c #11
- const char* PostMaj, - const char* PreMin, - const char* PostMin, - int FixWhite, - cmsColorSpaceSignature ColorSpace) + const char* PostMaj, + const char* PreMin, + const char* PostMin, + int FixWhite, + cmsColorSpaceSignature ColorSpace)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsps2.c
655
656
657
658
659
660
661
662
663
664
WriteByte(sc -> m, wByteOut); } return 1; } // Writes a Pipeline on memstream. Could be 8 or 16 bits based static void WriteCLUT(cmsIOHANDLER* m, cmsStage* mpe, const char* PreMaj,
+ show +
665
666
667
668
669
const char* PostMaj, const char* PreMin, const char* PostMin, int FixWhite, cmsColorSpaceSignature ColorSpace)
+ show +
670
671
672
673
674
675
676
677
678
679
{ cmsUInt32Number i; cmsPsSamplerCargo sc; sc.FirstComponent = -1; sc.SecondComponent = -1; sc.Pipeline = (_cmsStageCLutData *) mpe ->Data; sc.m = m; sc.PreMaj = PreMaj; sc.PostMaj= PostMaj;

[CVE-2023-40093_1.diff] cmsgamma.c #2
- 9, // # of curve types - { 1, 2, 3, 4, 5, 6, 7, 8, 108 }, // Parametric curve ID - { 1, 3, 4, 5, 7, 4, 5, 5, 1 }, // Parameters by type - DefaultEvalParametricFn, // Evaluator - NULL // Next in chain + 10, // # of curve types + { 1, 2, 3, 4, 5, 6, 7, 8, 108, 109 }, // Parametric curve ID + { 1, 3, 4, 5, 7, 4, 5, 5, 1, 1 }, // Parameters by type + DefaultEvalParametricFn, // Evaluator + NULL // Next in chain
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsgamma.c
52
53
54
55
56
57
58
59
60
61
struct _cmsParametricCurvesCollection_st* Next; // Next in list } _cmsParametricCurvesCollection; // This is the default (built-in) evaluator static cmsFloat64Number DefaultEvalParametricFn(cmsInt32Number Type, const cmsFloat64Number Params[], cmsFloat64Number R); // The built-in list static const _cmsParametricCurvesCollection DefaultCurves = {
+ show +
62
63
64
65
66
9, // # of curve types { 1, 2, 3, 4, 5, 6, 7, 8, 108 }, // Parametric curve ID { 1, 3, 4, 5, 7, 4, 5, 5, 1 }, // Parameters by type DefaultEvalParametricFn, // Evaluator NULL // Next in chain
+ show +
67
68
69
70
71
72
73
74
75
76
}; // Duplicates the zone of memory used by the plug-in in the new context static void DupPluginCurvesList(struct _cmsContext_struct* ctx, const struct _cmsContext_struct* src) { _cmsCurvesPluginChunkType newHead = { NULL }; _cmsParametricCurvesCollection* entry; _cmsParametricCurvesCollection* Anterior = NULL;

[CVE-2023-40093_1.diff] cmsopt.c #10
- // Named color pipelines cannot be optimized either - for (mpe = cmsPipelineGetPtrToFirstStage(Src); - mpe != NULL; - mpe = cmsStageNext(mpe)) { - if (cmsStageType(mpe) == cmsSigNamedColorElemType) return FALSE; - } -
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsopt.c
689
690
691
692
693
694
695
696
697
698
nGridPoints = _cmsReasonableGridpointsByColorspace(ColorSpace, *dwFlags); // For empty LUTs, 2 points are enough if (cmsPipelineStageCount(*Lut) == 0) nGridPoints = 2; Src = *Lut; // Named color pipelines cannot be optimized either
+ show +
699
700
701
702
for (mpe = cmsPipelineGetPtrToFirstStage(Src); mpe != NULL; mpe = cmsStageNext(mpe)) { if (cmsStageType(mpe) == cmsSigNamedColorElemType) return FALSE;
+ show +
703
704
705
706
707
708
709
710
711
712
} // Allocate an empty LUT Dest = cmsPipelineAlloc(Src ->ContextID, Src ->InputChannels, Src ->OutputChannels); if (!Dest) return FALSE; // Prelinearization tables are kept unless indicated by flags if (*dwFlags & cmsFLAGS_CLUT_PRE_LINEARIZATION) { // Get a pointer to the prelinearization element

[CVE-2023-40093_1.diff] cmsopt.c #16
- - // Named color pipelines cannot be optimized either - for (mpe = cmsPipelineGetPtrToFirstStage(OriginalLut); - mpe != NULL; - mpe = cmsStageNext(mpe)) { - if (cmsStageType(mpe) == cmsSigNamedColorElemType) return FALSE; - } - +
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsopt.c
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
if (T_PLANAR(*OutputFormat)) return FALSE; // On 16 bits, user has to specify the feature if (!_cmsFormatterIs8bit(*InputFormat)) { if (!(*dwFlags & cmsFLAGS_CLUT_PRE_LINEARIZATION)) return FALSE; } OriginalLut = *Lut; // Named color pipelines cannot be optimized either
+ show +
1095
1096
1097
1098
for (mpe = cmsPipelineGetPtrToFirstStage(OriginalLut); mpe != NULL; mpe = cmsStageNext(mpe)) { if (cmsStageType(mpe) == cmsSigNamedColorElemType) return FALSE;
+ show +
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
} ColorSpace = _cmsICCcolorSpace((int) T_COLORSPACE(*InputFormat)); OutputColorSpace = _cmsICCcolorSpace((int) T_COLORSPACE(*OutputFormat)); // Color space must be specified if (ColorSpace == (cmsColorSpaceSignature)0 || OutputColorSpace == (cmsColorSpaceSignature)0) return FALSE; nGridPoints = _cmsReasonableGridpointsByColorspace(ColorSpace, *dwFlags);

[CVE-2023-40093_1.diff] cmsopt.c #23
-// A fast matrix-shaper evaluator for 8 bits. This is a bit ticky since I'm using 1.14 signed fixed point +// A fast matrix-shaper evaluator for 8 bits. This is a bit tricky since I'm using 1.14 signed fixed point -static -void MatShaperEval16(register const cmsUInt16Number In[], - register cmsUInt16Number Out[], - register const void* D) +static CMS_NO_SANITIZE +void MatShaperEval16(CMSREGISTER const cmsUInt16Number In[], + CMSREGISTER cmsUInt16Number Out[], + CMSREGISTER const void* D)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsopt.c
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
static void* DupMatShaper(cmsContext ContextID, const void* Data) { return _cmsDupMem(ContextID, Data, sizeof(MatShaper8Data)); } // A fast matrix-shaper evaluator for 8 bits. This is a bit ticky since I'm using 1.14 signed fixed point // to accomplish some performance. Actually it takes 256x3 16 bits tables and 16385 x 3 tables of 8 bits, // in total about 50K, and the performance boost is huge!
+ show +
1557
1558
1559
1560
static void MatShaperEval16(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register const void* D)
+ show +
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
{ MatShaper8Data* p = (MatShaper8Data*) D; cmsS1Fixed14Number r, g, b; cmsInt64Number l1, l2, l3; cmsUInt32Number ri, gi, bi; // In this case (and only in this case!) we can use this simplification since // In[] is assured to come from a 8 bit number. (a << 8 | a) ri = In[0] & 0xFFU; gi = In[1] & 0xFFU;

[CVE-2023-40093_1.diff] cmsplugin.c #6
+ #elif !defined(_MSC_VER) && (defined(__STDC_VERSION__) && __STDC_VERSION__ < 199901L) + return TRUE; - cmsUInt32Number tmp; + union typeConverter { + cmsUInt32Number integer; + cmsFloat32Number floating_point; + } tmp; - _cmsAssert(io != NULL); - - tmp = *(cmsUInt32Number*) (void*) &n; - tmp = _cmsAdjustEndianess32(tmp); - if (io -> Write(io, sizeof(cmsUInt32Number), &tmp) != 1) + tmp.floating_point = n; + tmp.integer = _cmsAdjustEndianess32(tmp.integer); + if (io -> Write(io, sizeof(cmsUInt32Number), &tmp.integer) != 1)
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsplugin.c
296
297
298
299
300
301
302
303
304
305
tmp = _cmsAdjustEndianess32(n); if (io -> Write(io, sizeof(cmsUInt32Number), &tmp) != 1) return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWriteFloat32Number(cmsIOHANDLER* io, cmsFloat32Number n) {
+ show +
306
307
308
309
310
311
312
cmsUInt32Number tmp; _cmsAssert(io != NULL); tmp = *(cmsUInt32Number*) (void*) &n; tmp = _cmsAdjustEndianess32(tmp); if (io -> Write(io, sizeof(cmsUInt32Number), &tmp) != 1)
+ show +
313
314
315
316
317
318
319
320
321
322
return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWriteUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n) { cmsUInt64Number tmp; _cmsAssert(io != NULL);

[CVE-2023-40093_1.diff] cmsplugin.c #10
+ cmsUInt8Number* ptr; + // setlocale may be active, no commas are needed in PS generator + // and PS generator is our only client + for (ptr = Buffer; *ptr; ptr++) + { + if (*ptr == ',') *ptr = '.'; + } + + case cmsPluginParalellizationSig: + if (!_cmsRegisterParallelizationPlugin(id, Plugin)) return FALSE; + break; + - NULL, // Not in the linked list - NULL, // No suballocator - { - NULL, // UserPtr, - &_cmsLogErrorChunk, // Logger, - &_cmsAlarmCodesChunk, // AlarmCodes, - &_cmsAdaptationStateChunk, // AdaptationState, - &_cmsMemPluginChunk, // MemPlugin, - &_cmsInterpPluginChunk, // InterpPlugin, - &_cmsCurvesPluginChunk, // CurvesPlugin, - &_cmsFormattersPluginChunk, // FormattersPlugin, - &_cmsTagTypePluginChunk, // TagTypePlugin, - &_cmsTagPluginChunk, // TagPlugin, - &_cmsIntentsPluginChunk, // IntentPlugin, - &_cmsMPETypePluginChunk, // MPEPlugin, - &_cmsOptimizationPluginChunk, // OptimizationPlugin, - &_cmsTransformPluginChunk, // TransformPlugin, - &_cmsMutexPluginChunk // MutexPlugin + NULL, // Not in the linked list + NULL, // No suballocator + { + NULL, // UserPtr, + &_cmsLogErrorChunk, // Logger, + &_cmsAlarmCodesChunk, // AlarmCodes, + &_cmsAdaptationStateChunk, // AdaptationState, + &_cmsMemPluginChunk, // MemPlugin, + &_cmsInterpPluginChunk, // InterpPlugin, + &_cmsCurvesPluginChunk, // CurvesPlugin, + &_cmsFormattersPluginChunk, // FormattersPlugin, + &_cmsTagTypePluginChunk, // TagTypePlugin, + &_cmsTagPluginChunk, // TagPlugin, + &_cmsIntentsPluginChunk, // IntentPlugin, + &_cmsMPETypePluginChunk, // MPEPlugin, + &_cmsOptimizationPluginChunk, // OptimizationPlugin, + &_cmsTransformPluginChunk, // TransformPlugin, + &_cmsMutexPluginChunk, // MutexPlugin, + &_cmsParallelizationPluginChunk // ParallelizationPlugin
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsplugin.c
626
627
628
629
630
631
632
633
634
635
void CMSEXPORT cmsUnregisterPlugins(void) { cmsUnregisterPluginsTHR(NULL); } // The Global storage for system context. This is the one and only global variable // pointers structure. All global vars are referenced here. static struct _cmsContext_struct globalContext = {
+ show +
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
NULL, // Not in the linked list NULL, // No suballocator { NULL, // UserPtr, &_cmsLogErrorChunk, // Logger, &_cmsAlarmCodesChunk, // AlarmCodes, &_cmsAdaptationStateChunk, // AdaptationState, &_cmsMemPluginChunk, // MemPlugin, &_cmsInterpPluginChunk, // InterpPlugin, &_cmsCurvesPluginChunk, // CurvesPlugin, &_cmsFormattersPluginChunk, // FormattersPlugin, &_cmsTagTypePluginChunk, // TagTypePlugin, &_cmsTagPluginChunk, // TagPlugin, &_cmsIntentsPluginChunk, // IntentPlugin, &_cmsMPETypePluginChunk, // MPEPlugin, &_cmsOptimizationPluginChunk, // OptimizationPlugin, &_cmsTransformPluginChunk, // TransformPlugin, &_cmsMutexPluginChunk // MutexPlugin
+ show +
654
655
656
657
658
659
660
661
662
663
}, { NULL, NULL, NULL, NULL, NULL, NULL } // The default memory allocator is not used for context 0 }; // The context pool (linked list head) static _cmsMutex _cmsContextPoolHeadMutex = CMS_MUTEX_INITIALIZER; static struct _cmsContext_struct* _cmsContextPoolHead = NULL;

[CVE-2023-40093_1.diff] cmsplugin.c #14
+ _cmsRegisterParallelizationPlugin(ContextID, NULL); + - // See the comments regarding locking in lcms2_internal.h - // for an explanation of why we need the following code. -#ifdef CMS_IS_WINDOWS_ -#ifndef CMS_RELY_ON_WINDOWS_STATIC_MUTEX_INIT - { - static HANDLE _cmsWindowsInitMutex = NULL; - static volatile HANDLE* mutex = &_cmsWindowsInitMutex; - - if (*mutex == NULL) - { - HANDLE p = CreateMutex(NULL, FALSE, NULL); - if (p && InterlockedCompareExchangePointer((void **)mutex, (void*)p, NULL) != NULL) - CloseHandle(p); - } - if (*mutex == NULL || WaitForSingleObject(*mutex, INFINITE) == WAIT_FAILED) - return NULL; - if (((void **)&_cmsContextPoolHeadMutex)[0] == NULL) - InitializeCriticalSection(&_cmsContextPoolHeadMutex); - if (*mutex == NULL || !ReleaseMutex(*mutex)) - return NULL; - } -#endif -#endif + if (!InitContextMutex()) return NULL;
/media/esteban/ACOS/dotOS/external/pdfium/third_party/lcms/src/cmsplugin.c
763
764
765
766
767
768
769
770
771
772
// Creates a new context with optional associated plug-ins. Caller may also specify an optional pointer to user-defined // data that will be forwarded to plug-ins and logger. cmsContext CMSEXPORT cmsCreateContext(void* Plugin, void* UserData) { struct _cmsContext_struct* ctx; struct _cmsContext_struct fakeContext; // See the comments regarding locking in lcms2_internal.h // for an explanation of why we need the following code.
+ show +
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
#ifdef CMS_IS_WINDOWS_ #ifndef CMS_RELY_ON_WINDOWS_STATIC_MUTEX_INIT { static HANDLE _cmsWindowsInitMutex = NULL; static volatile HANDLE* mutex = &_cmsWindowsInitMutex; if (*mutex == NULL) { HANDLE p = CreateMutex(NULL, FALSE, NULL); if (p && InterlockedCompareExchangePointer((void **)mutex, (void*)p, NULL) != NULL) CloseHandle(p); } if (*mutex == NULL || WaitForSingleObject(*mutex, INFINITE) == WAIT_FAILED) return NULL; if (((void **)&_cmsContextPoolHeadMutex)[0] == NULL) InitializeCriticalSection(&_cmsContextPoolHeadMutex); if (*mutex == NULL || !ReleaseMutex(*mutex)) return NULL; } #endif #endif
+ show +
794
795
796
797
798
799
800
801
802
803
_cmsInstallAllocFunctions(_cmsFindMemoryPlugin(Plugin), &fakeContext.DefaultMemoryManager); fakeContext.chunks[UserPtr] = UserData; fakeContext.chunks[MemPlugin] = &fakeContext.DefaultMemoryManager; // Create the context structure. ctx = (struct _cmsContext_struct*) _cmsMalloc(&fakeContext, sizeof(struct _cmsContext_struct)); if (ctx == NULL) return NULL; // Something very wrong happened!

[CVE-2018-9472_1.diff] os400config.h.in #8
-/* Define to 1 if you have the `strdup' function. */ -#define HAVE_STRDUP 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 -
/media/esteban/ACOS/dotOS/external/json-c/config.h
76
77
78
79
80
81
82
83
84
85
/* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1
+ show +
86
87
88
89
90
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
91
92
93
94
95
96
97
98
99
100
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/ntfs-3g/config.h
193
194
195
196
197
198
199
200
201
202
/* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1
+ show +
203
204
205
206
207
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
208
209
210
211
212
213
214
215
216
217
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1
/media/esteban/ACOS/dotOS/external/mtools/config.h
198
199
200
201
202
203
204
205
206
207
/* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strcspn' function. */ #define HAVE_STRCSPN 1
+ show +
208
209
210
211
212
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
213
214
215
216
217
218
219
220
221
222
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/openssh/prebuilt-intermediates/config.h
961
962
963
964
965
966
967
968
969
970
/* Define to 1 if you have the <stddef.h> header file. */ #define HAVE_STDDEF_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
971
972
973
974
975
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
976
977
978
979
980
981
982
983
984
985
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Silly mkstemp() */ #define HAVE_STRICT_MKSTEMP 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1
/media/esteban/ACOS/dotOS/external/libxml2/config.h
188
189
190
191
192
193
194
195
196
197
/* Define to 1 if you have the <stdarg.h> header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
198
199
200
201
202
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
203
204
205
206
207
208
209
210
211
212
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1

[CVE-2018-9472_1.diff] config.vms #3
-/* Define to 1 if you have the `strdup' function. */ -#define HAVE_STRDUP 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 -
/media/esteban/ACOS/dotOS/external/json-c/config.h
76
77
78
79
80
81
82
83
84
85
/* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1
+ show +
86
87
88
89
90
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
91
92
93
94
95
96
97
98
99
100
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/ntfs-3g/config.h
193
194
195
196
197
198
199
200
201
202
/* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1
+ show +
203
204
205
206
207
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
208
209
210
211
212
213
214
215
216
217
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1
/media/esteban/ACOS/dotOS/external/mtools/config.h
198
199
200
201
202
203
204
205
206
207
/* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strcspn' function. */ #define HAVE_STRCSPN 1
+ show +
208
209
210
211
212
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
213
214
215
216
217
218
219
220
221
222
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/openssh/prebuilt-intermediates/config.h
961
962
963
964
965
966
967
968
969
970
/* Define to 1 if you have the <stddef.h> header file. */ #define HAVE_STDDEF_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
971
972
973
974
975
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
976
977
978
979
980
981
982
983
984
985
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Silly mkstemp() */ #define HAVE_STRICT_MKSTEMP 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1
/media/esteban/ACOS/dotOS/external/libxml2/config.h
188
189
190
191
192
193
194
195
196
197
/* Define to 1 if you have the <stdarg.h> header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
198
199
200
201
202
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
203
204
205
206
207
208
209
210
211
212
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1

[CVE-2018-9466_1.diff] os400config.h.in #8
-/* Define to 1 if you have the `strdup' function. */ -#define HAVE_STRDUP 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 -
/media/esteban/ACOS/dotOS/external/json-c/config.h
76
77
78
79
80
81
82
83
84
85
/* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1
+ show +
86
87
88
89
90
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
91
92
93
94
95
96
97
98
99
100
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/ntfs-3g/config.h
193
194
195
196
197
198
199
200
201
202
/* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1
+ show +
203
204
205
206
207
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
208
209
210
211
212
213
214
215
216
217
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1
/media/esteban/ACOS/dotOS/external/mtools/config.h
198
199
200
201
202
203
204
205
206
207
/* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strcspn' function. */ #define HAVE_STRCSPN 1
+ show +
208
209
210
211
212
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
213
214
215
216
217
218
219
220
221
222
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/openssh/prebuilt-intermediates/config.h
961
962
963
964
965
966
967
968
969
970
/* Define to 1 if you have the <stddef.h> header file. */ #define HAVE_STDDEF_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
971
972
973
974
975
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
976
977
978
979
980
981
982
983
984
985
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Silly mkstemp() */ #define HAVE_STRICT_MKSTEMP 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1
/media/esteban/ACOS/dotOS/external/libxml2/config.h
188
189
190
191
192
193
194
195
196
197
/* Define to 1 if you have the <stdarg.h> header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
198
199
200
201
202
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
203
204
205
206
207
208
209
210
211
212
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1

[CVE-2018-9466_1.diff] config.vms #3
-/* Define to 1 if you have the `strdup' function. */ -#define HAVE_STRDUP 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 -
/media/esteban/ACOS/dotOS/external/json-c/config.h
76
77
78
79
80
81
82
83
84
85
/* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1
+ show +
86
87
88
89
90
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
91
92
93
94
95
96
97
98
99
100
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/ntfs-3g/config.h
193
194
195
196
197
198
199
200
201
202
/* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1
+ show +
203
204
205
206
207
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
208
209
210
211
212
213
214
215
216
217
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1
/media/esteban/ACOS/dotOS/external/mtools/config.h
198
199
200
201
202
203
204
205
206
207
/* Define to 1 if you have the `strcasecmp' function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strcspn' function. */ #define HAVE_STRCSPN 1
+ show +
208
209
210
211
212
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
213
214
215
216
217
218
219
220
221
222
/* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1
/media/esteban/ACOS/dotOS/external/openssh/prebuilt-intermediates/config.h
961
962
963
964
965
966
967
968
969
970
/* Define to 1 if you have the <stddef.h> header file. */ #define HAVE_STDDEF_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
971
972
973
974
975
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
976
977
978
979
980
981
982
983
984
985
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Silly mkstemp() */ #define HAVE_STRICT_MKSTEMP 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1
/media/esteban/ACOS/dotOS/external/libxml2/config.h
188
189
190
191
192
193
194
195
196
197
/* Define to 1 if you have the <stdarg.h> header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1
+ show +
198
199
200
201
202
/* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1
+ show +
203
204
205
206
207
208
209
210
211
212
/* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the <strings.h> header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1

[CVE-2020-0100_1.diff] IHDCP.cpp #1
- data.read(inData, size); - - uint32_t streamCTR = data.readInt32(); - uint64_t inputCTR = data.readInt64(); - status_t err = decrypt(inData, size, streamCTR, inputCTR, outData); + status_t err = data.read(inData, size); + if (err == OK) { + uint32_t streamCTR = data.readInt32(); + uint64_t inputCTR = data.readInt64(); + err = decrypt(inData, size, streamCTR, inputCTR, outData); + }
/media/esteban/ACOS/dotOS/frameworks/av/media/libmedia/IHDCP.cpp
326
327
328
329
330
331
332
333
334
335
inData = malloc(bufSize); } if (inData == NULL) { reply->writeInt32(ERROR_OUT_OF_RANGE); return OK; } void *outData = (uint8_t *)inData + size;
+ show +
336
337
338
339
340
data.read(inData, size); uint32_t streamCTR = data.readInt32(); uint64_t inputCTR = data.readInt64(); status_t err = decrypt(inData, size, streamCTR, inputCTR, outData);
+ show +
341
342
343
344
345
346
347
348
349
350
reply->writeInt32(err); if (err == OK) { reply->write(outData, size); } free(inData); inData = outData = NULL;

[CVE-2020-0478_1.diff] aom_thread.h #3
-#if _WIN32_WINNT >= 0x0501 // Windows XP or greater -#define WaitForSingleObject(obj, timeout) \ - WaitForSingleObjectEx(obj, timeout, FALSE /*bAlertable*/) -#endif -
/media/esteban/ACOS/dotOS/external/webp/src/utils/thread_utils.c
60
61
62
63
64
65
66
67
68
69
//------------------------------------------------------------------------------ // simplistic pthread emulation layer #include <process.h> // _beginthreadex requires __stdcall #define THREADFN unsigned int __stdcall #define THREAD_RETURN(val) (unsigned int)((DWORD_PTR)val)
+ show +
70
71
72
73
#if _WIN32_WINNT >= 0x0501 // Windows XP or greater #define WaitForSingleObject(obj, timeout) \ WaitForSingleObjectEx(obj, timeout, FALSE /*bAlertable*/) #endif
+ show +
74
75
76
77
78
79
80
81
82
83
static int pthread_create(pthread_t* const thread, const void* attr, unsigned int (__stdcall* start)(void*), void* arg) { (void)attr; #ifdef USE_CREATE_THREAD *thread = CreateThread(NULL, /* lpThreadAttributes */ 0, /* dwStackSize */ start, arg, 0, /* dwStackSize */
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_util/vpx_thread.h
59
60
61
62
63
64
65
66
67
68
// _beginthreadex requires __stdcall #if defined(__GNUC__) && \ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) #define THREADFN __attribute__((force_align_arg_pointer)) unsigned int __stdcall #else #define THREADFN unsigned int __stdcall #endif #define THREAD_RETURN(val) (unsigned int)((DWORD_PTR)val)
+ show +
69
70
71
72
#if _WIN32_WINNT >= 0x0501 // Windows XP or greater #define WaitForSingleObject(obj, timeout) \ WaitForSingleObjectEx(obj, timeout, FALSE /*bAlertable*/) #endif
+ show +
73
74
75
76
77
78
79
80
81
82
static INLINE int pthread_create(pthread_t *const thread, const void *attr, unsigned int(__stdcall *start)(void *), void *arg) { (void)attr; #ifdef USE_CREATE_THREAD *thread = CreateThread(NULL, /* lpThreadAttributes */ 0, /* dwStackSize */ start, arg, 0, /* dwStackSize */ NULL); /* lpThreadId */

[CVE-2020-0470_1.diff] aom_thread.h #3
-#if _WIN32_WINNT >= 0x0501 // Windows XP or greater -#define WaitForSingleObject(obj, timeout) \ - WaitForSingleObjectEx(obj, timeout, FALSE /*bAlertable*/) -#endif -
/media/esteban/ACOS/dotOS/external/webp/src/utils/thread_utils.c
60
61
62
63
64
65
66
67
68
69
//------------------------------------------------------------------------------ // simplistic pthread emulation layer #include <process.h> // _beginthreadex requires __stdcall #define THREADFN unsigned int __stdcall #define THREAD_RETURN(val) (unsigned int)((DWORD_PTR)val)
+ show +
70
71
72
73
#if _WIN32_WINNT >= 0x0501 // Windows XP or greater #define WaitForSingleObject(obj, timeout) \ WaitForSingleObjectEx(obj, timeout, FALSE /*bAlertable*/) #endif
+ show +
74
75
76
77
78
79
80
81
82
83
static int pthread_create(pthread_t* const thread, const void* attr, unsigned int (__stdcall* start)(void*), void* arg) { (void)attr; #ifdef USE_CREATE_THREAD *thread = CreateThread(NULL, /* lpThreadAttributes */ 0, /* dwStackSize */ start, arg, 0, /* dwStackSize */
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_util/vpx_thread.h
59
60
61
62
63
64
65
66
67
68
// _beginthreadex requires __stdcall #if defined(__GNUC__) && \ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) #define THREADFN __attribute__((force_align_arg_pointer)) unsigned int __stdcall #else #define THREADFN unsigned int __stdcall #endif #define THREAD_RETURN(val) (unsigned int)((DWORD_PTR)val)
+ show +
69
70
71
72
#if _WIN32_WINNT >= 0x0501 // Windows XP or greater #define WaitForSingleObject(obj, timeout) \ WaitForSingleObjectEx(obj, timeout, FALSE /*bAlertable*/) #endif
+ show +
73
74
75
76
77
78
79
80
81
82
static INLINE int pthread_create(pthread_t *const thread, const void *attr, unsigned int(__stdcall *start)(void *), void *arg) { (void)attr; #ifdef USE_CREATE_THREAD *thread = CreateThread(NULL, /* lpThreadAttributes */ 0, /* dwStackSize */ start, arg, 0, /* dwStackSize */ NULL); /* lpThreadId */

[CVE-2021-39667_1.diff] ih264d_parse_slice.c #1
- /* Increment only if the current slice has atleast 1 more MB */ - if (ps_dec->u4_first_slice_in_pic == 0 && - (ps_dec->ps_parse_cur_slice->u4_first_mb_in_slice < - (UWORD32)(ps_dec->u2_total_mbs_coded >> ps_dec->ps_cur_slice->u1_mbaff_frame_flag))) - { - ps_dec->ps_parse_cur_slice++; - ps_dec->u2_cur_slice_num++; - // in the case of single core increment ps_decode_cur_slice - if(ps_dec->u1_separate_parse == 0) - { - ps_dec->ps_decode_cur_slice++; - } - } - - ps_dec->u1_slice_header_done = 0; - -
/media/esteban/ACOS/dotOS/external/libavc/decoder/ih264d_parse_slice.c
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
+ ps_dec->i4_max_poc + ps_dec->u1_max_dec_frame_buffering + 1; /*If i4_prev_max_display_seq overflows integer range, reset it */ ps_dec->i4_prev_max_display_seq = IS_OUT_OF_RANGE_S32(i8_temp)? 0 : i8_temp; ps_dec->i4_max_poc = 0; } } /* Increment only if the current slice has atleast 1 more MB */
+ show +
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
if (ps_dec->u4_first_slice_in_pic == 0 && (ps_dec->ps_parse_cur_slice->u4_first_mb_in_slice < (UWORD32)(ps_dec->u2_total_mbs_coded >> ps_dec->ps_cur_slice->u1_mbaff_frame_flag))) { ps_dec->ps_parse_cur_slice++; ps_dec->u2_cur_slice_num++; // in the case of single core increment ps_decode_cur_slice if(ps_dec->u1_separate_parse == 0) { ps_dec->ps_decode_cur_slice++; } } ps_dec->u1_slice_header_done = 0;
+ show +
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
/*--------------------------------------------------------------------*/ /* Copy the values read from the bitstream to the slice header and then*/ /* If the slice is first slice in picture, then do Start of Picture */ /* processing. */ /*--------------------------------------------------------------------*/ ps_cur_slice->i4_delta_pic_order_cnt[0] = i_delta_poc[0]; ps_cur_slice->i4_delta_pic_order_cnt[1] = i_delta_poc[1]; ps_cur_slice->u4_idr_pic_id = u4_idr_pic_id; ps_cur_slice->u2_first_mb_in_slice = u2_first_mb_in_slice;

[CVE-2020-0002_1.diff] ih264d_api.c #2
+ { + UWORD8 i; + struct pic_buffer_t *ps_init_dpb; + ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[0][0]; + for(i = 0; i < 2 * MAX_REF_BUFS; i++) + { + ps_init_dpb->pu1_buf1 = NULL; + ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1; + ps_dec->ps_dpb_mgr->ps_init_dpb[0][i] = ps_init_dpb; + ps_dec->ps_dpb_mgr->ps_mod_dpb[0][i] = ps_init_dpb; + ps_init_dpb++; + } + + ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[1][0]; + for(i = 0; i < 2 * MAX_REF_BUFS; i++) + { + ps_init_dpb->pu1_buf1 = NULL; + ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1; + ps_dec->ps_dpb_mgr->ps_init_dpb[1][i] = ps_init_dpb; + ps_dec->ps_dpb_mgr->ps_mod_dpb[1][i] = ps_init_dpb; + ps_init_dpb++; + } + } + - { - UWORD8 i; - struct pic_buffer_t *ps_init_dpb; - ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[0][0]; - for(i = 0; i < 2 * MAX_REF_BUFS; i++) - { - ps_init_dpb->pu1_buf1 = NULL; - ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1; - ps_dec->ps_dpb_mgr->ps_init_dpb[0][i] = ps_init_dpb; - ps_dec->ps_dpb_mgr->ps_mod_dpb[0][i] = ps_init_dpb; - ps_init_dpb++; - } - - ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[1][0]; - for(i = 0; i < 2 * MAX_REF_BUFS; i++) - { - ps_init_dpb->pu1_buf1 = NULL; - ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1; - ps_dec->ps_dpb_mgr->ps_init_dpb[1][i] = ps_init_dpb; - ps_dec->ps_dpb_mgr->ps_mod_dpb[1][i] = ps_init_dpb; - ps_init_dpb++; - } - }
/media/esteban/ACOS/dotOS/external/libavc/decoder/ih264d_api.c
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
size = (sizeof(neighbouradd_t) << 2); memset(ps_dec->ps_left_mvpred_addr, 0 ,size); size = sizeof(buf_mgr_t) + ithread_get_mutex_lock_size(); memset(ps_dec->pv_mv_buf_mgr, 0, size); /* Free any dynamic buffers that are allocated */ ih264d_free_dynamic_bufs(ps_dec); {
+ show +
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
UWORD8 i; struct pic_buffer_t *ps_init_dpb; ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[0][0]; for(i = 0; i < 2 * MAX_REF_BUFS; i++) { ps_init_dpb->pu1_buf1 = NULL; ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1; ps_dec->ps_dpb_mgr->ps_init_dpb[0][i] = ps_init_dpb; ps_dec->ps_dpb_mgr->ps_mod_dpb[0][i] = ps_init_dpb; ps_init_dpb++; } ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[1][0]; for(i = 0; i < 2 * MAX_REF_BUFS; i++) { ps_init_dpb->pu1_buf1 = NULL; ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1; ps_dec->ps_dpb_mgr->ps_init_dpb[1][i] = ps_init_dpb; ps_dec->ps_dpb_mgr->ps_mod_dpb[1][i] = ps_init_dpb; ps_init_dpb++;
+ show +
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
} } ps_cur_slice = ps_dec->ps_cur_slice; ps_dec->init_done = 0; ps_dec->u4_num_cores = 1; ps_dec->u2_pic_ht = ps_dec->u2_pic_wd = 0;

[CVE-2017-13264_1.diff] ih264d_api.c #2
- if(ps_dec->ps_out_buffer->u4_num_bufs < u4_min_num_out_bufs) - return IV_FAIL; - for(i = 0; i < u4_min_num_out_bufs; i++) + if(0 == ps_dec->u4_share_disp_buf) - if(ps_dec->ps_out_buffer->u4_min_out_buf_size[i] - < au4_min_out_buf_size[i]) - return (IV_FAIL); + if(ps_dec->ps_out_buffer->u4_num_bufs < u4_min_num_out_bufs) + return IV_FAIL; + + for(i = 0; i < u4_min_num_out_bufs; i++) + { + if(ps_dec->ps_out_buffer->u4_min_out_buf_size[i] + < au4_min_out_buf_size[i]) + return (IV_FAIL); + } + } + else + { + if(ps_dec->disp_bufs[0].u4_num_bufs < u4_min_num_out_bufs) + return IV_FAIL; + + for(i = 0; i < u4_min_num_out_bufs; i++) + { + /* We need to check only with the disp_buffer[0], because we have + * already ensured that all the buffers are of the same size in + * ih264d_set_display_frame. + */ + if(ps_dec->disp_bufs[0].u4_bufsize[i] < au4_min_out_buf_size[i]) + return (IV_FAIL); + } +
/media/esteban/ACOS/dotOS/external/libavc/decoder/ih264d_api.c
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
if(ps_dec->u4_app_disp_width > pic_wd) pic_wd = ps_dec->u4_app_disp_width; u4_min_num_out_bufs = ih264d_get_outbuf_size(pic_wd, pic_ht, ps_dec->u1_chroma_format, &au4_min_out_buf_size[0]); if(0 == ps_dec->u4_share_disp_buf) {
+ show +
1905
1906
1907
1908
1909
1910
1911
1912
if(ps_dec->ps_out_buffer->u4_num_bufs < u4_min_num_out_bufs) return IV_FAIL; for(i = 0; i < u4_min_num_out_bufs; i++) { if(ps_dec->ps_out_buffer->u4_min_out_buf_size[i] < au4_min_out_buf_size[i]) return (IV_FAIL);
+ show +
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
} } else { if(ps_dec->disp_bufs[0].u4_num_bufs < u4_min_num_out_bufs) return IV_FAIL; for(i = 0; i < u4_min_num_out_bufs; i++) { /* We need to check only with the disp_buffer[0], because we have

[CVE-2017-0757_1.diff] ih264d_api.c #5
- /*!*/ - if(ps_dec->u1_chroma_format == IV_YUV_420P) + ps_ctl_op->u4_min_num_out_bufs = ih264d_get_outbuf_size( + pic_wd, pic_ht, ps_dec->u1_chroma_format, + &au4_min_out_buf_size[0]); + + for(i = 0; i < ps_ctl_op->u4_min_num_out_bufs; i++) - ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht); - ps_ctl_op->u4_min_out_buf_size[1] = (pic_wd * pic_ht) - >> 2; - ps_ctl_op->u4_min_out_buf_size[2] = (pic_wd * pic_ht) - >> 2; + ps_ctl_op->u4_min_out_buf_size[i] = au4_min_out_buf_size[i]; - else if(ps_dec->u1_chroma_format == IV_YUV_422ILE) - { - ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht) - * 2; - ps_ctl_op->u4_min_out_buf_size[1] = - ps_ctl_op->u4_min_out_buf_size[2] = 0; - } - else if(ps_dec->u1_chroma_format == IV_RGB_565) - { - ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht) - * 2; - ps_ctl_op->u4_min_out_buf_size[1] = - ps_ctl_op->u4_min_out_buf_size[2] = 0; - } - else if((ps_dec->u1_chroma_format == IV_YUV_420SP_UV) - || (ps_dec->u1_chroma_format == IV_YUV_420SP_VU)) - { - ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht); - ps_ctl_op->u4_min_out_buf_size[1] = (pic_wd * pic_ht) - >> 1; - ps_ctl_op->u4_min_out_buf_size[2] = 0; - } +
/media/esteban/ACOS/dotOS/external/libavc/decoder/ih264d_api.c
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
ps_ctl_op->u4_error_code = ERROR_FEATURE_UNAVAIL; return IV_FAIL; } for(i = 0; i < ps_ctl_op->u4_min_num_in_bufs; i++) { ps_ctl_op->u4_min_in_buf_size[i] = MAX(256000, pic_wd * pic_ht * 3 / 2); } /*!*/
+ show +
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
if(ps_dec->u1_chroma_format == IV_YUV_420P) { ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht); ps_ctl_op->u4_min_out_buf_size[1] = (pic_wd * pic_ht) >> 2; ps_ctl_op->u4_min_out_buf_size[2] = (pic_wd * pic_ht) >> 2; } else if(ps_dec->u1_chroma_format == IV_YUV_422ILE) { ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht) * 2; ps_ctl_op->u4_min_out_buf_size[1] = ps_ctl_op->u4_min_out_buf_size[2] = 0; } else if(ps_dec->u1_chroma_format == IV_RGB_565) { ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht) * 2; ps_ctl_op->u4_min_out_buf_size[1] = ps_ctl_op->u4_min_out_buf_size[2] = 0; } else if((ps_dec->u1_chroma_format == IV_YUV_420SP_UV) || (ps_dec->u1_chroma_format == IV_YUV_420SP_VU)) { ps_ctl_op->u4_min_out_buf_size[0] = (pic_wd * pic_ht); ps_ctl_op->u4_min_out_buf_size[1] = (pic_wd * pic_ht) >> 1; ps_ctl_op->u4_min_out_buf_size[2] = 0;
+ show +
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
} ps_dec->u4_num_disp_bufs_requested = ps_ctl_op->u4_num_disp_bufs; return IV_SUCCESS; } /*****************************************************************************/ /* */ /* Function Name : ih264d_get_buf_info */ /* */

[CVE-2021-0516_1.diff] p2p_pd.c #1
+ dev = p2p_get_device(p2p, sa); - dev = p2p_get_device(p2p, sa); - if (!dev) { - p2p_dbg(p2p, - "Provision Discovery device not found " - MACSTR, MAC2STR(sa)); - goto out; - } + p2p_dbg(p2p, + "Provision Discovery device not found " + MACSTR, MAC2STR(sa)); + goto out;
/media/esteban/ACOS/dotOS/external/wpa_supplicant_8/src/p2p/p2p_pd.c
588
589
590
591
592
593
594
595
596
597
p2p_dbg(p2p, "Provision Discovery Request from unknown peer " MACSTR, MAC2STR(sa)); if (p2p_add_device(p2p, sa, rx_freq, NULL, 0, data + 1, len - 1, 0)) { p2p_dbg(p2p, "Provision Discovery Request add device failed " MACSTR, MAC2STR(sa)); goto out; }
+ show +
598
599
600
601
602
603
dev = p2p_get_device(p2p, sa); if (!dev) { p2p_dbg(p2p, "Provision Discovery device not found " MACSTR, MAC2STR(sa)); goto out;
+ show +
604
605
606
607
608
609
610
611
612
613
} } else if (msg.wfd_subelems) { wpabuf_free(dev->info.wfd_subelems); dev->info.wfd_subelems = wpabuf_dup(msg.wfd_subelems); } if (!msg.adv_id) { allowed_config_methods |= WPS_CONFIG_PUSHBUTTON; if (!(msg.wps_config_methods & allowed_config_methods)) { p2p_dbg(p2p,

[CVE-2015-6607_1.diff] sqlite3.c #1397
+/* +** Error message for when two or more terms of a compound select have different +** size result sets. +*/ +static void selectWrongNumTermsError(Parse *pParse, Select *p){ + if( p->selFlags & SF_Values ){ + sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); + }else{ + sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" + " do not have the same number of result columns", selectOpName(p->op)); + } +} + +/* +** Handle the special case of a compound-select that originates from a +** VALUES clause. By handling this as a special case, we avoid deep +** recursion, and thus do not need to enforce the SQLITE_LIMIT_COMPOUND_SELECT +** on a VALUES clause. +** +** Because the Select object originates from a VALUES clause: +** (1) It has no LIMIT or OFFSET +** (2) All terms are UNION ALL +** (3) There is no ORDER BY clause +*/ +static int multiSelectValues( + Parse *pParse, /* Parsing context */ + Select *p, /* The right-most of SELECTs to be coded */ + SelectDest *pDest /* What to do with query results */ +){ + Select *pPrior; + int nExpr = p->pEList->nExpr; + int nRow = 1; + int rc = 0; + assert( p->pNext==0 ); + assert( p->selFlags & SF_AllValues ); + do{ + assert( p->selFlags & SF_Values ); + assert( p->op==TK_ALL || (p->op==TK_SELECT && p->pPrior==0) ); + assert( p->pLimit==0 ); + assert( p->pOffset==0 ); + if( p->pEList->nExpr!=nExpr ){ + selectWrongNumTermsError(pParse, p); + return 1; + } + if( p->pPrior==0 ) break; + assert( p->pPrior->pNext==p ); + p = p->pPrior; + nRow++; + }while(1); + while( p ){ + pPrior = p->pPrior; + p->pPrior = 0; + rc = sqlite3Select(pParse, p, pDest); + p->pPrior = pPrior; + if( rc ) break; + p->nSelectRow = nRow; + p = p->pNext; + } + return rc; +} + /* Special handling for a compound-select that originates as a VALUES clause. + */ + if( p->selFlags & SF_AllValues ){ + rc = multiSelectValues(pParse, p, &dest); + goto multi_select_end; + } + - if( p->selFlags & SF_Values ){ - sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); - }else{ - sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" - " do not have the same number of result columns", selectOpName(p->op)); - } + selectWrongNumTermsError(pParse, p);
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
132197
132198
132199
132200
132201
132202
132203
132204
132205
132206
sqlite3SelectDelete(db, pDelete); return rc; } #endif /* SQLITE_OMIT_COMPOUND_SELECT */ /* ** Error message for when two or more terms of a compound select have different ** size result sets. */ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
+ show +
132207
132208
132209
132210
132211
if( p->selFlags & SF_Values ){ sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); }else{ sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" " do not have the same number of result columns", selectOpName(p->op));
+ show +
132212
132213
132214
132215
132216
132217
132218
132219
132220
132221
} } /* ** Code an output subroutine for a coroutine implementation of a ** SELECT statment. ** ** The data to be output is contained in pIn->iSdst. There are ** pIn->nSdst columns to be output. pDest is where the output should ** be sent.
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
131839
131840
131841
131842
131843
131844
131845
131846
131847
131848
sqlite3SelectDelete(db, pDelete); return rc; } #endif /* SQLITE_OMIT_COMPOUND_SELECT */ /* ** Error message for when two or more terms of a compound select have different ** size result sets. */ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
+ show +
131849
131850
131851
131852
131853
if( p->selFlags & SF_Values ){ sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); }else{ sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" " do not have the same number of result columns", selectOpName(p->op));
+ show +
131854
131855
131856
131857
131858
131859
131860
131861
131862
131863
} } /* ** Code an output subroutine for a coroutine implementation of a ** SELECT statment. ** ** The data to be output is contained in pIn->iSdst. There are ** pIn->nSdst columns to be output. pDest is where the output should ** be sent.
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
131823
131824
131825
131826
131827
131828
131829
131830
131831
131832
sqlite3SelectDelete(db, pDelete); return rc; } #endif /* SQLITE_OMIT_COMPOUND_SELECT */ /* ** Error message for when two or more terms of a compound select have different ** size result sets. */ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
+ show +
131833
131834
131835
131836
131837
if( p->selFlags & SF_Values ){ sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); }else{ sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" " do not have the same number of result columns", selectOpName(p->op));
+ show +
131838
131839
131840
131841
131842
131843
131844
131845
131846
131847
} } /* ** Code an output subroutine for a coroutine implementation of a ** SELECT statment. ** ** The data to be output is contained in pIn->iSdst. There are ** pIn->nSdst columns to be output. pDest is where the output should ** be sent.

[CVE-2015-6607_1.diff] sqlite3.c #1397
+/* +** Error message for when two or more terms of a compound select have different +** size result sets. +*/ +static void selectWrongNumTermsError(Parse *pParse, Select *p){ + if( p->selFlags & SF_Values ){ + sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); + }else{ + sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" + " do not have the same number of result columns", selectOpName(p->op)); + } +} + +/* +** Handle the special case of a compound-select that originates from a +** VALUES clause. By handling this as a special case, we avoid deep +** recursion, and thus do not need to enforce the SQLITE_LIMIT_COMPOUND_SELECT +** on a VALUES clause. +** +** Because the Select object originates from a VALUES clause: +** (1) It has no LIMIT or OFFSET +** (2) All terms are UNION ALL +** (3) There is no ORDER BY clause +*/ +static int multiSelectValues( + Parse *pParse, /* Parsing context */ + Select *p, /* The right-most of SELECTs to be coded */ + SelectDest *pDest /* What to do with query results */ +){ + Select *pPrior; + int nExpr = p->pEList->nExpr; + int nRow = 1; + int rc = 0; + assert( p->pNext==0 ); + assert( p->selFlags & SF_AllValues ); + do{ + assert( p->selFlags & SF_Values ); + assert( p->op==TK_ALL || (p->op==TK_SELECT && p->pPrior==0) ); + assert( p->pLimit==0 ); + assert( p->pOffset==0 ); + if( p->pEList->nExpr!=nExpr ){ + selectWrongNumTermsError(pParse, p); + return 1; + } + if( p->pPrior==0 ) break; + assert( p->pPrior->pNext==p ); + p = p->pPrior; + nRow++; + }while(1); + while( p ){ + pPrior = p->pPrior; + p->pPrior = 0; + rc = sqlite3Select(pParse, p, pDest); + p->pPrior = pPrior; + if( rc ) break; + p->nSelectRow = nRow; + p = p->pNext; + } + return rc; +} + /* Special handling for a compound-select that originates as a VALUES clause. + */ + if( p->selFlags & SF_AllValues ){ + rc = multiSelectValues(pParse, p, &dest); + goto multi_select_end; + } + - if( p->selFlags & SF_Values ){ - sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); - }else{ - sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" - " do not have the same number of result columns", selectOpName(p->op)); - } + selectWrongNumTermsError(pParse, p);
/media/esteban/ACOS/dotOS/external/rust/crates/libsqlite3-sys/sqlite3/sqlite3.c
132197
132198
132199
132200
132201
132202
132203
132204
132205
132206
sqlite3SelectDelete(db, pDelete); return rc; } #endif /* SQLITE_OMIT_COMPOUND_SELECT */ /* ** Error message for when two or more terms of a compound select have different ** size result sets. */ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
+ show +
132207
132208
132209
132210
132211
if( p->selFlags & SF_Values ){ sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); }else{ sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" " do not have the same number of result columns", selectOpName(p->op));
+ show +
132212
132213
132214
132215
132216
132217
132218
132219
132220
132221
} } /* ** Code an output subroutine for a coroutine implementation of a ** SELECT statment. ** ** The data to be output is contained in pIn->iSdst. There are ** pIn->nSdst columns to be output. pDest is where the output should ** be sent.
/media/esteban/ACOS/dotOS/external/sqlite/dist/sqlite3.c
131839
131840
131841
131842
131843
131844
131845
131846
131847
131848
sqlite3SelectDelete(db, pDelete); return rc; } #endif /* SQLITE_OMIT_COMPOUND_SELECT */ /* ** Error message for when two or more terms of a compound select have different ** size result sets. */ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
+ show +
131849
131850
131851
131852
131853
if( p->selFlags & SF_Values ){ sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); }else{ sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" " do not have the same number of result columns", selectOpName(p->op));
+ show +
131854
131855
131856
131857
131858
131859
131860
131861
131862
131863
} } /* ** Code an output subroutine for a coroutine implementation of a ** SELECT statment. ** ** The data to be output is contained in pIn->iSdst. There are ** pIn->nSdst columns to be output. pDest is where the output should ** be sent.
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/sqlite3.c
131823
131824
131825
131826
131827
131828
131829
131830
131831
131832
sqlite3SelectDelete(db, pDelete); return rc; } #endif /* SQLITE_OMIT_COMPOUND_SELECT */ /* ** Error message for when two or more terms of a compound select have different ** size result sets. */ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
+ show +
131833
131834
131835
131836
131837
if( p->selFlags & SF_Values ){ sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); }else{ sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" " do not have the same number of result columns", selectOpName(p->op));
+ show +
131838
131839
131840
131841
131842
131843
131844
131845
131846
131847
} } /* ** Code an output subroutine for a coroutine implementation of a ** SELECT statment. ** ** The data to be output is contained in pIn->iSdst. There are ** pIn->nSdst columns to be output. pDest is where the output should ** be sent.

[CVE-2024-43091_1.diff] SkEmbossMaskFilter.cpp #1
- size_t planeSize = dst->computeImageSize(); - if (0 == planeSize) { - return false; // too big to allocate, abort + size_t totalSize = dst->computeTotalImageSize(); + if (totalSize == 0) { + return false; // too big to allocate, abort - dst->fImage = SkMask::AllocImage(planeSize * 3); + size_t planeSize = dst->computeImageSize(); + SkASSERT(planeSize != 0); // if totalSize didn't overflow, this can't either + dst->fImage = SkMask::AllocImage(totalSize);
/media/esteban/ACOS/dotOS/external/skqp/src/effects/SkEmbossMaskFilter.cpp
88
89
90
91
92
93
94
95
96
97
} if (src.fImage == nullptr) { return true; } // create a larger buffer for the other two channels (should force fBlur to do this for us) { uint8_t* alphaPlane = dst->fImage;
+ show +
98
99
100
101
102
size_t planeSize = dst->computeImageSize(); if (0 == planeSize) { return false; // too big to allocate, abort } dst->fImage = SkMask::AllocImage(planeSize * 3);
+ show +
103
104
105
106
107
108
109
110
111
112
memcpy(dst->fImage, alphaPlane, planeSize); SkMask::FreeImage(alphaPlane); } // run the light direction through the matrix... Light light = fLight; matrix.mapVectors((SkVector*)(void*)light.fDirection, (SkVector*)(void*)fLight.fDirection, 1); // now restore the length of the XY component
/media/esteban/ACOS/dotOS/external/skia/src/effects/SkEmbossMaskFilter.cpp
89
90
91
92
93
94
95
96
97
98
} if (src.fImage == nullptr) { return true; } // create a larger buffer for the other two channels (should force fBlur to do this for us) { uint8_t* alphaPlane = dst->fImage;
+ show +
99
100
101
102
103
size_t planeSize = dst->computeImageSize(); if (0 == planeSize) { return false; // too big to allocate, abort } dst->fImage = SkMask::AllocImage(planeSize * 3);
+ show +
104
105
106
107
108
109
110
111
112
113
memcpy(dst->fImage, alphaPlane, planeSize); SkMask::FreeImage(alphaPlane); } // run the light direction through the matrix... Light light = fLight; matrix.mapVectors((SkVector*)(void*)light.fDirection, (SkVector*)(void*)fLight.fDirection, 1); // now restore the length of the XY component

[CVE-2020-0478_1.diff] yv12config.c #4
- if (external_frame_size != (size_t)external_frame_size) return -1; + if (external_frame_size != (size_t)external_frame_size) + return AOM_CODEC_MEM_ERROR; - if (cb(cb_priv, (size_t)external_frame_size, fb) < 0) return -1; + if (cb(cb_priv, (size_t)external_frame_size, fb) < 0) + return AOM_CODEC_MEM_ERROR; - if (fb->data == NULL || fb->size < external_frame_size) return -1; + if (fb->data == NULL || fb->size < external_frame_size) + return AOM_CODEC_MEM_ERROR; - ybf->buffer_alloc = (uint8_t *)yv12_align_addr(fb->data, 32); + ybf->buffer_alloc = (uint8_t *)aom_align_addr(fb->data, 32);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_scale/generic/yv12config.c
200
201
202
203
204
205
206
207
208
209
if (frame_size > SIZE_MAX) { return -1; } if (cb != NULL) { const int align_addr_extra_size = 31; const uint64_t external_frame_size = frame_size + align_addr_extra_size; assert(fb != NULL);
+ show +
210
211
212
213
214
215
216
217
if (external_frame_size != (size_t)external_frame_size) return -1; // Allocation to hold larger frame, or first allocation. if (cb(cb_priv, (size_t)external_frame_size, fb) < 0) return -1; if (fb->data == NULL || fb->size < external_frame_size) return -1; ybf->buffer_alloc = (uint8_t *)yv12_align_addr(fb->data, 32);
+ show +
218
219
220
221
222
223
224
225
226
227
#if defined(__has_feature) #if __has_feature(memory_sanitizer) // This memset is needed for fixing the issue of using uninitialized // value in msan test. It will cause a perf loss, so only do this for // msan test. memset(ybf->buffer_alloc, 0, (size_t)frame_size); #endif #endif } else if (frame_size > ybf->buffer_alloc_sz) {

[CVE-2020-0470_1.diff] yv12config.c #4
- if (external_frame_size != (size_t)external_frame_size) return -1; + if (external_frame_size != (size_t)external_frame_size) + return AOM_CODEC_MEM_ERROR; - if (cb(cb_priv, (size_t)external_frame_size, fb) < 0) return -1; + if (cb(cb_priv, (size_t)external_frame_size, fb) < 0) + return AOM_CODEC_MEM_ERROR; - if (fb->data == NULL || fb->size < external_frame_size) return -1; + if (fb->data == NULL || fb->size < external_frame_size) + return AOM_CODEC_MEM_ERROR; - ybf->buffer_alloc = (uint8_t *)yv12_align_addr(fb->data, 32); + ybf->buffer_alloc = (uint8_t *)aom_align_addr(fb->data, 32);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_scale/generic/yv12config.c
200
201
202
203
204
205
206
207
208
209
if (frame_size > SIZE_MAX) { return -1; } if (cb != NULL) { const int align_addr_extra_size = 31; const uint64_t external_frame_size = frame_size + align_addr_extra_size; assert(fb != NULL);
+ show +
210
211
212
213
214
215
216
217
if (external_frame_size != (size_t)external_frame_size) return -1; // Allocation to hold larger frame, or first allocation. if (cb(cb_priv, (size_t)external_frame_size, fb) < 0) return -1; if (fb->data == NULL || fb->size < external_frame_size) return -1; ybf->buffer_alloc = (uint8_t *)yv12_align_addr(fb->data, 32);
+ show +
218
219
220
221
222
223
224
225
226
227
#if defined(__has_feature) #if __has_feature(memory_sanitizer) // This memset is needed for fixing the issue of using uninitialized // value in msan test. It will cause a perf loss, so only do this for // msan test. memset(ybf->buffer_alloc, 0, (size_t)frame_size); #endif #endif } else if (frame_size > ybf->buffer_alloc_sz) {

[CVE-2017-13194_1.diff] vpx_image.c #1
- /* Calculate storage sizes given the chroma subsampling */ - align = (1 << xcs) - 1; - w = (d_w + align) & ~align; - align = (1 << ycs) - 1; - h = (d_h + align) & ~align; + /* Calculate storage sizes. If the buffer was allocated externally, the width + * and height shouldn't be adjusted. */ + w = d_w; + h = d_h;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx/src/vpx_image.c
86
87
88
89
90
91
92
93
94
95
img->self_allocd = 1; } else { memset(img, 0, sizeof(vpx_image_t)); } img->img_data = img_data; if (!img_data) { uint64_t alloc_size; /* Calculate storage sizes given the chroma subsampling */
+ show +
96
97
98
99
align = (1 << xcs) - 1; w = (d_w + align) & ~align; align = (1 << ycs) - 1; h = (d_h + align) & ~align;
+ show +
100
101
102
103
104
105
106
107
108
109
s = (fmt & VPX_IMG_FMT_PLANAR) ? w : bps * w / 8; s = (s + stride_align - 1) & ~(stride_align - 1); stride_in_bytes = (fmt & VPX_IMG_FMT_HIGHBITDEPTH) ? s * 2 : s; alloc_size = (fmt & VPX_IMG_FMT_PLANAR) ? (uint64_t)h * s * bps / 8 : (uint64_t)h * s; if (alloc_size != (size_t)alloc_size) goto fail; img->img_data = (uint8_t *)vpx_memalign(buf_align, (size_t)alloc_size);

[CVE-2020-0478_1.diff] external_frame_buffer_test.cc #1
- if (img->fb_priv != NULL) { - const struct ExternalFrameBuffer *const ext_fb = - reinterpret_cast<ExternalFrameBuffer *>(img->fb_priv); + const struct ExternalFrameBuffer *const ext_fb = + reinterpret_cast<ExternalFrameBuffer *>(img->fb_priv); - ASSERT_TRUE(img->planes[0] >= ext_fb->data && - img->planes[0] < (ext_fb->data + ext_fb->size)); - } + ASSERT_TRUE(img->planes[0] >= ext_fb->data && + img->planes[0] < (ext_fb->data + ext_fb->size));
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/test/external_frame_buffer_test.cc
110
111
112
113
114
115
116
117
118
119
} EXPECT_EQ(1, ext_fb->in_use); ext_fb->in_use = 0; num_used_buffers_--; return 0; } // Checks that the vpx_image_t data is contained within the external frame // buffer private data passed back in the vpx_image_t. void CheckImageFrameBuffer(const vpx_image_t *img) {
+ show +
120
121
122
123
124
125
if (img->fb_priv != NULL) { const struct ExternalFrameBuffer *const ext_fb = reinterpret_cast<ExternalFrameBuffer *>(img->fb_priv); ASSERT_TRUE(img->planes[0] >= ext_fb->data && img->planes[0] < (ext_fb->data + ext_fb->size));
+ show +
126
127
128
129
130
131
132
133
134
135
} } int num_used_buffers() const { return num_used_buffers_; } private: // Returns the index of the first free frame buffer. Returns |num_buffers_| // if there are no free frame buffers. int FindFreeBufferIndex() { int i;

[CVE-2020-0470_1.diff] external_frame_buffer_test.cc #1
- if (img->fb_priv != NULL) { - const struct ExternalFrameBuffer *const ext_fb = - reinterpret_cast<ExternalFrameBuffer *>(img->fb_priv); + const struct ExternalFrameBuffer *const ext_fb = + reinterpret_cast<ExternalFrameBuffer *>(img->fb_priv); - ASSERT_TRUE(img->planes[0] >= ext_fb->data && - img->planes[0] < (ext_fb->data + ext_fb->size)); - } + ASSERT_TRUE(img->planes[0] >= ext_fb->data && + img->planes[0] < (ext_fb->data + ext_fb->size));
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/test/external_frame_buffer_test.cc
110
111
112
113
114
115
116
117
118
119
} EXPECT_EQ(1, ext_fb->in_use); ext_fb->in_use = 0; num_used_buffers_--; return 0; } // Checks that the vpx_image_t data is contained within the external frame // buffer private data passed back in the vpx_image_t. void CheckImageFrameBuffer(const vpx_image_t *img) {
+ show +
120
121
122
123
124
125
if (img->fb_priv != NULL) { const struct ExternalFrameBuffer *const ext_fb = reinterpret_cast<ExternalFrameBuffer *>(img->fb_priv); ASSERT_TRUE(img->planes[0] >= ext_fb->data && img->planes[0] < (ext_fb->data + ext_fb->size));
+ show +
126
127
128
129
130
131
132
133
134
135
} } int num_used_buffers() const { return num_used_buffers_; } private: // Returns the index of the first free frame buffer. Returns |num_buffers_| // if there are no free frame buffers. int FindFreeBufferIndex() { int i;

[CVE-2020-0478_1.diff] mcomp.c #21
-static const MV search_pos[4] = { - { -1, 0 }, - { 0, -1 }, - { 0, 1 }, - { 1, 0 }, -}; - +// A special fast version of motion search used in rt mode
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_mcomp.c
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
this_sad = vpx_vector_var(&ref[this_pos], src, bwl); if (this_sad < best_sad) { best_sad = this_sad; center = this_pos; } } return (center - (bw >> 1)); }
+ show +
2293
2294
2295
2296
2297
2298
static const MV search_pos[4] = { { -1, 0 }, { 0, -1 }, { 0, 1 }, { 1, 0 }, };
+ show +
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
unsigned int vp9_int_pro_motion_estimation(const VP9_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int mi_row, int mi_col, const MV *ref_mv) { MACROBLOCKD *xd = &x->e_mbd; MODE_INFO *mi = xd->mi[0]; struct buf_2d backup_yv12[MAX_MB_PLANE] = { { 0, 0 } }; DECLARE_ALIGNED(16, int16_t, hbuf[128]); DECLARE_ALIGNED(16, int16_t, vbuf[128]); DECLARE_ALIGNED(16, int16_t, src_hbuf[64]);
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/encoder/mcomp.c
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
const int search_width = bw << 1; const int search_height = bh << 1; const int src_stride = x->plane[0].src.stride; const int ref_stride = xd->plane[0].pre[0].stride; uint8_t const *ref_buf, *src_buf; int_mv *best_int_mv = &xd->mi[0]->mv[0]; unsigned int best_sad, tmp_sad, this_sad[4]; const int norm_factor = 3 + (bw >> 5); const YV12_BUFFER_CONFIG *scaled_ref_frame = av1_get_scaled_ref_frame(cpi, mi->ref_frame[0]);
+ show +
1655
1656
1657
1658
1659
1660
static const MV search_pos[4] = { { -1, 0 }, { 0, -1 }, { 0, 1 }, { 1, 0 }, };
+ show +
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
if (scaled_ref_frame) { int i; // Swap out the reference frame for a version that's been scaled to // match the resolution of the current frame, allowing the existing // motion search code to be used without additional modifications. for (i = 0; i < MAX_MB_PLANE; i++) backup_yv12[i] = xd->plane[i].pre[0]; av1_setup_pre_planes(xd, 0, scaled_ref_frame, mi_row, mi_col, NULL, MAX_MB_PLANE); }

[CVE-2020-0470_1.diff] mcomp.c #21
-static const MV search_pos[4] = { - { -1, 0 }, - { 0, -1 }, - { 0, 1 }, - { 1, 0 }, -}; - +// A special fast version of motion search used in rt mode
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_mcomp.c
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
this_sad = vpx_vector_var(&ref[this_pos], src, bwl); if (this_sad < best_sad) { best_sad = this_sad; center = this_pos; } } return (center - (bw >> 1)); }
+ show +
2293
2294
2295
2296
2297
2298
static const MV search_pos[4] = { { -1, 0 }, { 0, -1 }, { 0, 1 }, { 1, 0 }, };
+ show +
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
unsigned int vp9_int_pro_motion_estimation(const VP9_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int mi_row, int mi_col, const MV *ref_mv) { MACROBLOCKD *xd = &x->e_mbd; MODE_INFO *mi = xd->mi[0]; struct buf_2d backup_yv12[MAX_MB_PLANE] = { { 0, 0 } }; DECLARE_ALIGNED(16, int16_t, hbuf[128]); DECLARE_ALIGNED(16, int16_t, vbuf[128]); DECLARE_ALIGNED(16, int16_t, src_hbuf[64]);
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/encoder/mcomp.c
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
const int search_width = bw << 1; const int search_height = bh << 1; const int src_stride = x->plane[0].src.stride; const int ref_stride = xd->plane[0].pre[0].stride; uint8_t const *ref_buf, *src_buf; int_mv *best_int_mv = &xd->mi[0]->mv[0]; unsigned int best_sad, tmp_sad, this_sad[4]; const int norm_factor = 3 + (bw >> 5); const YV12_BUFFER_CONFIG *scaled_ref_frame = av1_get_scaled_ref_frame(cpi, mi->ref_frame[0]);
+ show +
1655
1656
1657
1658
1659
1660
static const MV search_pos[4] = { { -1, 0 }, { 0, -1 }, { 0, 1 }, { 1, 0 }, };
+ show +
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
if (scaled_ref_frame) { int i; // Swap out the reference frame for a version that's been scaled to // match the resolution of the current frame, allowing the existing // motion search code to be used without additional modifications. for (i = 0; i < MAX_MB_PLANE; i++) backup_yv12[i] = xd->plane[i].pre[0]; av1_setup_pre_planes(xd, 0, scaled_ref_frame, mi_row, mi_col, NULL, MAX_MB_PLANE); }

[CVE-2020-0478_1.diff] tpl_model.c #3
-static void tpl_model_update_b(TplDepFrame *tpl_frame, TplDepStats *tpl_stats, - int mi_row, int mi_col, const BLOCK_SIZE bsize) { - TplDepFrame *ref_tpl_frame = &tpl_frame[tpl_stats->ref_frame_index]; - TplDepStats *ref_stats = ref_tpl_frame->tpl_stats_ptr; - MV mv = tpl_stats->mv.as_mv; - int mv_row = mv.row >> 3; - int mv_col = mv.col >> 3; +int av1_tpl_ptr_pos(int mi_row, int mi_col, int stride, uint8_t right_shift) { + return (mi_row >> right_shift) * stride + (mi_col >> right_shift); +} - int ref_pos_row = mi_row * MI_SIZE + mv_row; - int ref_pos_col = mi_col * MI_SIZE + mv_col; +static int64_t delta_rate_cost(int64_t delta_rate, int64_t recrf_dist, + int64_t srcrf_dist, int pix_num) { + double beta = (double)srcrf_dist / recrf_dist; + int64_t rate_cost = delta_rate; + + if (srcrf_dist <= 128) return rate_cost; + + double dr = + (double)(delta_rate >> (TPL_DEP_COST_SCALE_LOG2 + AV1_PROB_COST_SHIFT)) / + pix_num; + + double log_den = log(beta) / log(2.0) + 2.0 * dr; + + if (log_den > log(10.0) / log(2.0)) { + rate_cost = (int64_t)((log(1.0 / beta) * pix_num) / log(2.0) / 2.0); + rate_cost <<= (TPL_DEP_COST_SCALE_LOG2 + AV1_PROB_COST_SHIFT); + return rate_cost; + } + + double num = pow(2.0, log_den); + double den = num * beta + (1 - beta) * beta; + + rate_cost = (int64_t)((pix_num * log(num / den)) / log(2.0) / 2.0); + + rate_cost <<= (TPL_DEP_COST_SCALE_LOG2 + AV1_PROB_COST_SHIFT); + + return rate_cost; +} + +static AOM_INLINE void tpl_model_update_b(TplParams *const tpl_data, int mi_row, + int mi_col, const BLOCK_SIZE bsize, + int frame_idx) { + TplDepFrame *tpl_frame_ptr = &tpl_data->tpl_frame[frame_idx]; + TplDepStats *tpl_ptr = tpl_frame_ptr->tpl_stats_ptr; + TplDepFrame *tpl_frame = tpl_data->tpl_frame; + const uint8_t block_mis_log2 = tpl_data->tpl_stats_block_mis_log2; + TplDepStats *tpl_stats_ptr = &tpl_ptr[av1_tpl_ptr_pos( + mi_row, mi_col, tpl_frame->stride, block_mis_log2)]; + + if (tpl_stats_ptr->ref_frame_index < 0) return; + const int ref_frame_index = tpl_stats_ptr->ref_frame_index; + TplDepFrame *ref_tpl_frame = + &tpl_frame[tpl_frame[frame_idx].ref_map_index[ref_frame_index]]; + TplDepStats *ref_stats_ptr = ref_tpl_frame->tpl_stats_ptr; + + if (tpl_frame[frame_idx].ref_map_index[ref_frame_index] < 0) return; + + const FULLPEL_MV full_mv = + get_fullmv_from_mv(&tpl_stats_ptr->mv[ref_frame_index].as_mv); + const int ref_pos_row = mi_row * MI_SIZE + full_mv.row; + const int ref_pos_col = mi_col * MI_SIZE + full_mv.col;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_encoder.c
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
const int64_t mc_flow = tpl_ptr->mc_flow; const int64_t mc_ref_cost = tpl_ptr->mc_ref_cost; *tpl_ptr = *src_stats; tpl_ptr->mc_flow = mc_flow; tpl_ptr->mc_ref_cost = mc_ref_cost; tpl_ptr->mc_dep_cost = tpl_ptr->intra_cost + tpl_ptr->mc_flow; } } }
+ show +
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
static void tpl_model_update_b(TplDepFrame *tpl_frame, TplDepStats *tpl_stats, int mi_row, int mi_col, const BLOCK_SIZE bsize) { TplDepFrame *ref_tpl_frame = &tpl_frame[tpl_stats->ref_frame_index]; TplDepStats *ref_stats = ref_tpl_frame->tpl_stats_ptr; MV mv = tpl_stats->mv.as_mv; int mv_row = mv.row >> 3; int mv_col = mv.col >> 3; int ref_pos_row = mi_row * MI_SIZE + mv_row; int ref_pos_col = mi_col * MI_SIZE + mv_col;
+ show +
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
const int bw = 4 << b_width_log2_lookup[bsize]; const int bh = 4 << b_height_log2_lookup[bsize]; const int mi_height = num_8x8_blocks_high_lookup[bsize]; const int mi_width = num_8x8_blocks_wide_lookup[bsize]; const int pix_num = bw * bh; // top-left on grid block location in pixel int grid_pos_row_base = round_floor(ref_pos_row, bh) * bh; int grid_pos_col_base = round_floor(ref_pos_col, bw) * bw;

[CVE-2020-0478_1.diff] tpl_model.c #5
+ int64_t cur_dep_dist = tpl_stats_ptr->recrf_dist - tpl_stats_ptr->srcrf_dist; + int64_t mc_dep_dist = (int64_t)( + tpl_stats_ptr->mc_dep_dist * + ((double)(tpl_stats_ptr->recrf_dist - tpl_stats_ptr->srcrf_dist) / + tpl_stats_ptr->recrf_dist)); + int64_t delta_rate = tpl_stats_ptr->recrf_rate - tpl_stats_ptr->srcrf_rate; + int64_t mc_dep_rate = + delta_rate_cost(tpl_stats_ptr->mc_dep_rate, tpl_stats_ptr->recrf_dist, + tpl_stats_ptr->srcrf_dist, pix_num); + + const int step = 1 << block_mis_log2; - int64_t mc_flow = tpl_stats->mc_dep_cost - - (tpl_stats->mc_dep_cost * tpl_stats->inter_cost) / - tpl_stats->intra_cost; + for (int idy = 0; idy < mi_height; idy += step) { + for (int idx = 0; idx < mi_width; idx += step) { + TplDepStats *des_stats = &ref_stats_ptr[av1_tpl_ptr_pos( + ref_mi_row + idy, ref_mi_col + idx, ref_tpl_frame->stride, + block_mis_log2)]; + des_stats->mc_dep_dist += + ((cur_dep_dist + mc_dep_dist) * overlap_area) / pix_num; + des_stats->mc_dep_rate += + ((delta_rate + mc_dep_rate) * overlap_area) / pix_num; - int idx, idy; - - for (idy = 0; idy < mi_height; ++idy) { - for (idx = 0; idx < mi_width; ++idx) { - TplDepStats *des_stats = - &ref_stats[(ref_mi_row + idy) * ref_tpl_frame->stride + - (ref_mi_col + idx)]; - - des_stats->mc_flow += (mc_flow * overlap_area) / pix_num;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_encoder.c
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
int grid_pos_row = grid_pos_row_base + bh * (block >> 1); int grid_pos_col = grid_pos_col_base + bw * (block & 0x01); if (grid_pos_row >= 0 && grid_pos_row < ref_tpl_frame->mi_rows * MI_SIZE && grid_pos_col >= 0 && grid_pos_col < ref_tpl_frame->mi_cols * MI_SIZE) { int overlap_area = get_overlap_area( grid_pos_row, grid_pos_col, ref_pos_row, ref_pos_col, block, bsize); int ref_mi_row = round_floor(grid_pos_row, bh) * mi_height; int ref_mi_col = round_floor(grid_pos_col, bw) * mi_width;
+ show +
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
int64_t mc_flow = tpl_stats->mc_dep_cost - (tpl_stats->mc_dep_cost * tpl_stats->inter_cost) / tpl_stats->intra_cost; int idx, idy; for (idy = 0; idy < mi_height; ++idy) { for (idx = 0; idx < mi_width; ++idx) { TplDepStats *des_stats = &ref_stats[(ref_mi_row + idy) * ref_tpl_frame->stride + (ref_mi_col + idx)]; des_stats->mc_flow += (mc_flow * overlap_area) / pix_num;
+ show +
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
des_stats->mc_ref_cost += ((tpl_stats->intra_cost - tpl_stats->inter_cost) * overlap_area) / pix_num; assert(overlap_area >= 0); } } } } }

[CVE-2020-0470_1.diff] tpl_model.c #3
-static void tpl_model_update_b(TplDepFrame *tpl_frame, TplDepStats *tpl_stats, - int mi_row, int mi_col, const BLOCK_SIZE bsize) { - TplDepFrame *ref_tpl_frame = &tpl_frame[tpl_stats->ref_frame_index]; - TplDepStats *ref_stats = ref_tpl_frame->tpl_stats_ptr; - MV mv = tpl_stats->mv.as_mv; - int mv_row = mv.row >> 3; - int mv_col = mv.col >> 3; +int av1_tpl_ptr_pos(int mi_row, int mi_col, int stride, uint8_t right_shift) { + return (mi_row >> right_shift) * stride + (mi_col >> right_shift); +} - int ref_pos_row = mi_row * MI_SIZE + mv_row; - int ref_pos_col = mi_col * MI_SIZE + mv_col; +static int64_t delta_rate_cost(int64_t delta_rate, int64_t recrf_dist, + int64_t srcrf_dist, int pix_num) { + double beta = (double)srcrf_dist / recrf_dist; + int64_t rate_cost = delta_rate; + + if (srcrf_dist <= 128) return rate_cost; + + double dr = + (double)(delta_rate >> (TPL_DEP_COST_SCALE_LOG2 + AV1_PROB_COST_SHIFT)) / + pix_num; + + double log_den = log(beta) / log(2.0) + 2.0 * dr; + + if (log_den > log(10.0) / log(2.0)) { + rate_cost = (int64_t)((log(1.0 / beta) * pix_num) / log(2.0) / 2.0); + rate_cost <<= (TPL_DEP_COST_SCALE_LOG2 + AV1_PROB_COST_SHIFT); + return rate_cost; + } + + double num = pow(2.0, log_den); + double den = num * beta + (1 - beta) * beta; + + rate_cost = (int64_t)((pix_num * log(num / den)) / log(2.0) / 2.0); + + rate_cost <<= (TPL_DEP_COST_SCALE_LOG2 + AV1_PROB_COST_SHIFT); + + return rate_cost; +} + +static AOM_INLINE void tpl_model_update_b(TplParams *const tpl_data, int mi_row, + int mi_col, const BLOCK_SIZE bsize, + int frame_idx) { + TplDepFrame *tpl_frame_ptr = &tpl_data->tpl_frame[frame_idx]; + TplDepStats *tpl_ptr = tpl_frame_ptr->tpl_stats_ptr; + TplDepFrame *tpl_frame = tpl_data->tpl_frame; + const uint8_t block_mis_log2 = tpl_data->tpl_stats_block_mis_log2; + TplDepStats *tpl_stats_ptr = &tpl_ptr[av1_tpl_ptr_pos( + mi_row, mi_col, tpl_frame->stride, block_mis_log2)]; + + if (tpl_stats_ptr->ref_frame_index < 0) return; + const int ref_frame_index = tpl_stats_ptr->ref_frame_index; + TplDepFrame *ref_tpl_frame = + &tpl_frame[tpl_frame[frame_idx].ref_map_index[ref_frame_index]]; + TplDepStats *ref_stats_ptr = ref_tpl_frame->tpl_stats_ptr; + + if (tpl_frame[frame_idx].ref_map_index[ref_frame_index] < 0) return; + + const FULLPEL_MV full_mv = + get_fullmv_from_mv(&tpl_stats_ptr->mv[ref_frame_index].as_mv); + const int ref_pos_row = mi_row * MI_SIZE + full_mv.row; + const int ref_pos_col = mi_col * MI_SIZE + full_mv.col;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_encoder.c
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
const int64_t mc_flow = tpl_ptr->mc_flow; const int64_t mc_ref_cost = tpl_ptr->mc_ref_cost; *tpl_ptr = *src_stats; tpl_ptr->mc_flow = mc_flow; tpl_ptr->mc_ref_cost = mc_ref_cost; tpl_ptr->mc_dep_cost = tpl_ptr->intra_cost + tpl_ptr->mc_flow; } } }
+ show +
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
static void tpl_model_update_b(TplDepFrame *tpl_frame, TplDepStats *tpl_stats, int mi_row, int mi_col, const BLOCK_SIZE bsize) { TplDepFrame *ref_tpl_frame = &tpl_frame[tpl_stats->ref_frame_index]; TplDepStats *ref_stats = ref_tpl_frame->tpl_stats_ptr; MV mv = tpl_stats->mv.as_mv; int mv_row = mv.row >> 3; int mv_col = mv.col >> 3; int ref_pos_row = mi_row * MI_SIZE + mv_row; int ref_pos_col = mi_col * MI_SIZE + mv_col;
+ show +
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
const int bw = 4 << b_width_log2_lookup[bsize]; const int bh = 4 << b_height_log2_lookup[bsize]; const int mi_height = num_8x8_blocks_high_lookup[bsize]; const int mi_width = num_8x8_blocks_wide_lookup[bsize]; const int pix_num = bw * bh; // top-left on grid block location in pixel int grid_pos_row_base = round_floor(ref_pos_row, bh) * bh; int grid_pos_col_base = round_floor(ref_pos_col, bw) * bw;

[CVE-2020-0470_1.diff] tpl_model.c #5
+ int64_t cur_dep_dist = tpl_stats_ptr->recrf_dist - tpl_stats_ptr->srcrf_dist; + int64_t mc_dep_dist = (int64_t)( + tpl_stats_ptr->mc_dep_dist * + ((double)(tpl_stats_ptr->recrf_dist - tpl_stats_ptr->srcrf_dist) / + tpl_stats_ptr->recrf_dist)); + int64_t delta_rate = tpl_stats_ptr->recrf_rate - tpl_stats_ptr->srcrf_rate; + int64_t mc_dep_rate = + delta_rate_cost(tpl_stats_ptr->mc_dep_rate, tpl_stats_ptr->recrf_dist, + tpl_stats_ptr->srcrf_dist, pix_num); + + const int step = 1 << block_mis_log2; - int64_t mc_flow = tpl_stats->mc_dep_cost - - (tpl_stats->mc_dep_cost * tpl_stats->inter_cost) / - tpl_stats->intra_cost; + for (int idy = 0; idy < mi_height; idy += step) { + for (int idx = 0; idx < mi_width; idx += step) { + TplDepStats *des_stats = &ref_stats_ptr[av1_tpl_ptr_pos( + ref_mi_row + idy, ref_mi_col + idx, ref_tpl_frame->stride, + block_mis_log2)]; + des_stats->mc_dep_dist += + ((cur_dep_dist + mc_dep_dist) * overlap_area) / pix_num; + des_stats->mc_dep_rate += + ((delta_rate + mc_dep_rate) * overlap_area) / pix_num; - int idx, idy; - - for (idy = 0; idy < mi_height; ++idy) { - for (idx = 0; idx < mi_width; ++idx) { - TplDepStats *des_stats = - &ref_stats[(ref_mi_row + idy) * ref_tpl_frame->stride + - (ref_mi_col + idx)]; - - des_stats->mc_flow += (mc_flow * overlap_area) / pix_num;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_encoder.c
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
int grid_pos_row = grid_pos_row_base + bh * (block >> 1); int grid_pos_col = grid_pos_col_base + bw * (block & 0x01); if (grid_pos_row >= 0 && grid_pos_row < ref_tpl_frame->mi_rows * MI_SIZE && grid_pos_col >= 0 && grid_pos_col < ref_tpl_frame->mi_cols * MI_SIZE) { int overlap_area = get_overlap_area( grid_pos_row, grid_pos_col, ref_pos_row, ref_pos_col, block, bsize); int ref_mi_row = round_floor(grid_pos_row, bh) * mi_height; int ref_mi_col = round_floor(grid_pos_col, bw) * mi_width;
+ show +
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
int64_t mc_flow = tpl_stats->mc_dep_cost - (tpl_stats->mc_dep_cost * tpl_stats->inter_cost) / tpl_stats->intra_cost; int idx, idy; for (idy = 0; idy < mi_height; ++idy) { for (idx = 0; idx < mi_width; ++idx) { TplDepStats *des_stats = &ref_stats[(ref_mi_row + idy) * ref_tpl_frame->stride + (ref_mi_col + idx)]; des_stats->mc_flow += (mc_flow * overlap_area) / pix_num;
+ show +
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
des_stats->mc_ref_cost += ((tpl_stats->intra_cost - tpl_stats->inter_cost) * overlap_area) / pix_num; assert(overlap_area >= 0); } } } } }

[CVE-2020-0478_1.diff] var_based_part.c #14
+#if CONFIG_AV1_HIGHBITDEPTH + if (highbd_flag & YV12_FLAG_HIGHBITDEPTH) { + s_avg = aom_highbd_avg_4x4(s + y4_idx * sp + x4_idx, sp); + if (!is_key_frame) + d_avg = aom_highbd_avg_4x4(d + y4_idx * dp + x4_idx, dp); + } else { + s_avg = aom_avg_4x4(s + y4_idx * sp + x4_idx, sp); + if (!is_key_frame) d_avg = aom_avg_4x4(d + y4_idx * dp + x4_idx, dp); + } +#else +#endif + +// TODO(kyslov) Bring back threshold adjustment based on content state + (void)width; + (void)height; + (void)content_state; - if (width <= 640 && height <= 480) - return (5 * threshold_base) >> 2; - else if ((content_state == kLowSadLowSumdiff) || - (content_state == kHighSadLowSumdiff) || - (content_state == kLowVarHighSumdiff)) - return (5 * threshold_base) >> 2; - } else if (speed == 7) { - if ((content_state == kLowSadLowSumdiff) || - (content_state == kHighSadLowSumdiff) || - (content_state == kLowVarHighSumdiff)) { - return (5 * threshold_base) >> 2; - } + return (5 * threshold_base) >> 2;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_encodeframe.c
573
574
575
576
577
578
579
580
581
582
return 0; } return 0; } static int64_t scale_part_thresh_sumdiff(int64_t threshold_base, int speed, int width, int height, int content_state) { if (speed >= 8) {
+ show +
583
584
585
586
587
588
589
590
591
592
593
if (width <= 640 && height <= 480) return (5 * threshold_base) >> 2; else if ((content_state == kLowSadLowSumdiff) || (content_state == kHighSadLowSumdiff) || (content_state == kLowVarHighSumdiff)) return (5 * threshold_base) >> 2; } else if (speed == 7) { if ((content_state == kLowSadLowSumdiff) || (content_state == kHighSadLowSumdiff) || (content_state == kLowVarHighSumdiff)) { return (5 * threshold_base) >> 2;
+ show +
594
595
596
597
598
599
600
601
602
603
} } return threshold_base; } // Set the variance split thresholds for following the block sizes: // 0 - threshold_64x64, 1 - threshold_32x32, 2 - threshold_16x16, // 3 - vbp_threshold_8x8. vbp_threshold_8x8 (to split to 4x4 partition) is // currently only used on key frame. static void set_vbp_thresholds(VP9_COMP *cpi, int64_t thresholds[], int q,

[CVE-2020-0470_1.diff] var_based_part.c #14
+#if CONFIG_AV1_HIGHBITDEPTH + if (highbd_flag & YV12_FLAG_HIGHBITDEPTH) { + s_avg = aom_highbd_avg_4x4(s + y4_idx * sp + x4_idx, sp); + if (!is_key_frame) + d_avg = aom_highbd_avg_4x4(d + y4_idx * dp + x4_idx, dp); + } else { + s_avg = aom_avg_4x4(s + y4_idx * sp + x4_idx, sp); + if (!is_key_frame) d_avg = aom_avg_4x4(d + y4_idx * dp + x4_idx, dp); + } +#else +#endif + +// TODO(kyslov) Bring back threshold adjustment based on content state + (void)width; + (void)height; + (void)content_state; - if (width <= 640 && height <= 480) - return (5 * threshold_base) >> 2; - else if ((content_state == kLowSadLowSumdiff) || - (content_state == kHighSadLowSumdiff) || - (content_state == kLowVarHighSumdiff)) - return (5 * threshold_base) >> 2; - } else if (speed == 7) { - if ((content_state == kLowSadLowSumdiff) || - (content_state == kHighSadLowSumdiff) || - (content_state == kLowVarHighSumdiff)) { - return (5 * threshold_base) >> 2; - } + return (5 * threshold_base) >> 2;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/encoder/vp9_encodeframe.c
573
574
575
576
577
578
579
580
581
582
return 0; } return 0; } static int64_t scale_part_thresh_sumdiff(int64_t threshold_base, int speed, int width, int height, int content_state) { if (speed >= 8) {
+ show +
583
584
585
586
587
588
589
590
591
592
593
if (width <= 640 && height <= 480) return (5 * threshold_base) >> 2; else if ((content_state == kLowSadLowSumdiff) || (content_state == kHighSadLowSumdiff) || (content_state == kLowVarHighSumdiff)) return (5 * threshold_base) >> 2; } else if (speed == 7) { if ((content_state == kLowSadLowSumdiff) || (content_state == kHighSadLowSumdiff) || (content_state == kLowVarHighSumdiff)) { return (5 * threshold_base) >> 2;
+ show +
594
595
596
597
598
599
600
601
602
603
} } return threshold_base; } // Set the variance split thresholds for following the block sizes: // 0 - threshold_64x64, 1 - threshold_32x32, 2 - threshold_16x16, // 3 - vbp_threshold_8x8. vbp_threshold_8x8 (to split to 4x4 partition) is // currently only used on key frame. static void set_vbp_thresholds(VP9_COMP *cpi, int64_t thresholds[], int q,

[CVE-2020-0478_1.diff] mv.h #5
-static INLINE void clamp_mv(MV *mv, int min_col, int max_col, int min_row, - int max_row) { - mv->col = clamp(mv->col, min_col, max_col); - mv->row = clamp(mv->row, min_row, max_row); +static INLINE void clamp_mv(MV *mv, const SubpelMvLimits *mv_limits) { + mv->col = clamp(mv->col, mv_limits->col_min, mv_limits->col_max); + mv->row = clamp(mv->row, mv_limits->row_min, mv_limits->row_max); +} + +static INLINE void clamp_fullmv(FULLPEL_MV *mv, const FullMvLimits *mv_limits) { + mv->col = clamp(mv->col, mv_limits->col_min, mv_limits->col_max); + mv->row = clamp(mv->row, mv_limits->row_min, mv_limits->row_max);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_mv.h
37
38
39
40
41
42
43
44
45
46
} MV32; static INLINE int is_zero_mv(const MV *mv) { return *((const uint32_t *)mv) == 0; } static INLINE int is_equal_mv(const MV *a, const MV *b) { return *((const uint32_t *)a) == *((const uint32_t *)b); }
+ show +
47
48
49
50
static INLINE void clamp_mv(MV *mv, int min_col, int max_col, int min_row, int max_row) { mv->col = clamp(mv->col, min_col, max_col); mv->row = clamp(mv->row, min_row, max_row);
+ show +
51
52
53
54
55
56
57
} #ifdef __cplusplus } // extern "C" #endif #endif // VPX_VP9_COMMON_VP9_MV_H_

[CVE-2020-0470_1.diff] mv.h #5
-static INLINE void clamp_mv(MV *mv, int min_col, int max_col, int min_row, - int max_row) { - mv->col = clamp(mv->col, min_col, max_col); - mv->row = clamp(mv->row, min_row, max_row); +static INLINE void clamp_mv(MV *mv, const SubpelMvLimits *mv_limits) { + mv->col = clamp(mv->col, mv_limits->col_min, mv_limits->col_max); + mv->row = clamp(mv->row, mv_limits->row_min, mv_limits->row_max); +} + +static INLINE void clamp_fullmv(FULLPEL_MV *mv, const FullMvLimits *mv_limits) { + mv->col = clamp(mv->col, mv_limits->col_min, mv_limits->col_max); + mv->row = clamp(mv->row, mv_limits->row_min, mv_limits->row_max);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_mv.h
37
38
39
40
41
42
43
44
45
46
} MV32; static INLINE int is_zero_mv(const MV *mv) { return *((const uint32_t *)mv) == 0; } static INLINE int is_equal_mv(const MV *a, const MV *b) { return *((const uint32_t *)a) == *((const uint32_t *)b); }
+ show +
47
48
49
50
static INLINE void clamp_mv(MV *mv, int min_col, int max_col, int min_row, int max_row) { mv->col = clamp(mv->col, min_col, max_col); mv->row = clamp(mv->row, min_row, max_row);
+ show +
51
52
53
54
55
56
57
} #ifdef __cplusplus } // extern "C" #endif #endif // VPX_VP9_COMMON_VP9_MV_H_

[CVE-2020-0478_1.diff] encodemv.h #2
+void av1_update_mv_stats(const MV *mv, const MV *ref, nmv_context *mvctx, + MvSubpelPrecision precision); + - if (mv->row == 0) { - return mv->col == 0 ? MV_JOINT_ZERO : MV_JOINT_HNZVZ; - } else { - return mv->col == 0 ? MV_JOINT_HZVNZ : MV_JOINT_HNZVNZ; - } + // row: Z col: Z | MV_JOINT_ZERO (0) + // row: Z col: NZ | MV_JOINT_HNZVZ (1) + // row: NZ col: Z | MV_JOINT_HZVNZ (2) + // row: NZ col: NZ | MV_JOINT_HNZVNZ (3) + return (!!mv->col) | ((!!mv->row) << 1); +} + +static INLINE int av1_mv_class_base(MV_CLASS_TYPE c) { + return c ? CLASS0_SIZE << (c + 2) : 0; +} + +// If n != 0, returns the floor of log base 2 of n. If n == 0, returns 0. +static INLINE uint8_t av1_log_in_base_2(unsigned int n) { + // get_msb() is only valid when n != 0. + return n == 0 ? 0 : get_msb(n); +} + +static INLINE MV_CLASS_TYPE av1_get_mv_class(int z, int *offset) { + const MV_CLASS_TYPE c = (z >= CLASS0_SIZE * 4096) + ? MV_CLASS_10 + : (MV_CLASS_TYPE)av1_log_in_base_2(z >> 3); + if (offset) *offset = z - av1_mv_class_base(c); + return c;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_entropymv.h
95
96
97
98
99
100
101
102
103
104
vpx_prob class0_hp; vpx_prob hp; } nmv_component; typedef struct { vpx_prob joints[MV_JOINTS - 1]; nmv_component comps[2]; } nmv_context; static INLINE MV_JOINT_TYPE vp9_get_mv_joint(const MV *mv) {
+ show +
105
106
107
108
if (mv->row == 0) { return mv->col == 0 ? MV_JOINT_ZERO : MV_JOINT_HNZVZ; } else { return mv->col == 0 ? MV_JOINT_HZVNZ : MV_JOINT_HNZVNZ;
+ show +
109
110
111
112
113
114
115
116
117
118
} } MV_CLASS_TYPE vp9_get_mv_class(int z, int *offset); typedef struct { unsigned int sign[2]; unsigned int classes[MV_CLASSES]; unsigned int class0[CLASS0_SIZE]; unsigned int bits[MV_OFFSET_BITS][2];

[CVE-2020-0470_1.diff] encodemv.h #2
+void av1_update_mv_stats(const MV *mv, const MV *ref, nmv_context *mvctx, + MvSubpelPrecision precision); + - if (mv->row == 0) { - return mv->col == 0 ? MV_JOINT_ZERO : MV_JOINT_HNZVZ; - } else { - return mv->col == 0 ? MV_JOINT_HZVNZ : MV_JOINT_HNZVNZ; - } + // row: Z col: Z | MV_JOINT_ZERO (0) + // row: Z col: NZ | MV_JOINT_HNZVZ (1) + // row: NZ col: Z | MV_JOINT_HZVNZ (2) + // row: NZ col: NZ | MV_JOINT_HNZVNZ (3) + return (!!mv->col) | ((!!mv->row) << 1); +} + +static INLINE int av1_mv_class_base(MV_CLASS_TYPE c) { + return c ? CLASS0_SIZE << (c + 2) : 0; +} + +// If n != 0, returns the floor of log base 2 of n. If n == 0, returns 0. +static INLINE uint8_t av1_log_in_base_2(unsigned int n) { + // get_msb() is only valid when n != 0. + return n == 0 ? 0 : get_msb(n); +} + +static INLINE MV_CLASS_TYPE av1_get_mv_class(int z, int *offset) { + const MV_CLASS_TYPE c = (z >= CLASS0_SIZE * 4096) + ? MV_CLASS_10 + : (MV_CLASS_TYPE)av1_log_in_base_2(z >> 3); + if (offset) *offset = z - av1_mv_class_base(c); + return c;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_entropymv.h
95
96
97
98
99
100
101
102
103
104
vpx_prob class0_hp; vpx_prob hp; } nmv_component; typedef struct { vpx_prob joints[MV_JOINTS - 1]; nmv_component comps[2]; } nmv_context; static INLINE MV_JOINT_TYPE vp9_get_mv_joint(const MV *mv) {
+ show +
105
106
107
108
if (mv->row == 0) { return mv->col == 0 ? MV_JOINT_ZERO : MV_JOINT_HNZVZ; } else { return mv->col == 0 ? MV_JOINT_HZVNZ : MV_JOINT_HNZVNZ;
+ show +
109
110
111
112
113
114
115
116
117
118
} } MV_CLASS_TYPE vp9_get_mv_class(int z, int *offset); typedef struct { unsigned int sign[2]; unsigned int classes[MV_CLASSES]; unsigned int class0[CLASS0_SIZE]; unsigned int bits[MV_OFFSET_BITS][2];

[CVE-2020-0478_1.diff] reconinter.h #9
+ const SubpelMvLimits mv_limits = { + xd->mb_to_left_edge * (1 << (1 - ss_x)) - spel_left, + xd->mb_to_right_edge * (1 << (1 - ss_x)) + spel_right, + xd->mb_to_top_edge * (1 << (1 - ss_y)) - spel_top, + xd->mb_to_bottom_edge * (1 << (1 - ss_y)) + spel_bottom + }; - clamp_mv(&clamped_mv, xd->mb_to_left_edge * (1 << (1 - ss_x)) - spel_left, - xd->mb_to_right_edge * (1 << (1 - ss_x)) + spel_right, - xd->mb_to_top_edge * (1 << (1 - ss_y)) - spel_top, - xd->mb_to_bottom_edge * (1 << (1 - ss_y)) + spel_bottom); + clamp_mv(&clamped_mv, &mv_limits);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_reconinter.c
94
95
96
97
98
99
100
101
102
103
// discarded and the MV limited to 16 pixels with equivalent results. const int spel_left = (VP9_INTERP_EXTEND + bw) << SUBPEL_BITS; const int spel_right = spel_left - SUBPEL_SHIFTS; const int spel_top = (VP9_INTERP_EXTEND + bh) << SUBPEL_BITS; const int spel_bottom = spel_top - SUBPEL_SHIFTS; MV clamped_mv = { (short)(src_mv->row * (1 << (1 - ss_y))), (short)(src_mv->col * (1 << (1 - ss_x))) }; assert(ss_x <= 1); assert(ss_y <= 1);
+ show +
104
105
106
107
clamp_mv(&clamped_mv, xd->mb_to_left_edge * (1 << (1 - ss_x)) - spel_left, xd->mb_to_right_edge * (1 << (1 - ss_x)) + spel_right, xd->mb_to_top_edge * (1 << (1 - ss_y)) - spel_top, xd->mb_to_bottom_edge * (1 << (1 - ss_y)) + spel_bottom);
+ show +
108
109
110
111
112
113
114
115
116
117
return clamped_mv; } MV average_split_mvs(const struct macroblockd_plane *pd, const MODE_INFO *mi, int ref, int block) { const int ss_idx = ((pd->subsampling_x > 0) << 1) | (pd->subsampling_y > 0); MV res = { 0, 0 }; switch (ss_idx) { case 0: res = mi->bmi[block].as_mv[ref].as_mv; break;

[CVE-2020-0470_1.diff] reconinter.h #9
+ const SubpelMvLimits mv_limits = { + xd->mb_to_left_edge * (1 << (1 - ss_x)) - spel_left, + xd->mb_to_right_edge * (1 << (1 - ss_x)) + spel_right, + xd->mb_to_top_edge * (1 << (1 - ss_y)) - spel_top, + xd->mb_to_bottom_edge * (1 << (1 - ss_y)) + spel_bottom + }; - clamp_mv(&clamped_mv, xd->mb_to_left_edge * (1 << (1 - ss_x)) - spel_left, - xd->mb_to_right_edge * (1 << (1 - ss_x)) + spel_right, - xd->mb_to_top_edge * (1 << (1 - ss_y)) - spel_top, - xd->mb_to_bottom_edge * (1 << (1 - ss_y)) + spel_bottom); + clamp_mv(&clamped_mv, &mv_limits);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_reconinter.c
94
95
96
97
98
99
100
101
102
103
// discarded and the MV limited to 16 pixels with equivalent results. const int spel_left = (VP9_INTERP_EXTEND + bw) << SUBPEL_BITS; const int spel_right = spel_left - SUBPEL_SHIFTS; const int spel_top = (VP9_INTERP_EXTEND + bh) << SUBPEL_BITS; const int spel_bottom = spel_top - SUBPEL_SHIFTS; MV clamped_mv = { (short)(src_mv->row * (1 << (1 - ss_y))), (short)(src_mv->col * (1 << (1 - ss_x))) }; assert(ss_x <= 1); assert(ss_y <= 1);
+ show +
104
105
106
107
clamp_mv(&clamped_mv, xd->mb_to_left_edge * (1 << (1 - ss_x)) - spel_left, xd->mb_to_right_edge * (1 << (1 - ss_x)) + spel_right, xd->mb_to_top_edge * (1 << (1 - ss_y)) - spel_top, xd->mb_to_bottom_edge * (1 << (1 - ss_y)) + spel_bottom);
+ show +
108
109
110
111
112
113
114
115
116
117
return clamped_mv; } MV average_split_mvs(const struct macroblockd_plane *pd, const MODE_INFO *mi, int ref, int block) { const int ss_idx = ((pd->subsampling_x > 0) << 1) | (pd->subsampling_y > 0); MV res = { 0, 0 }; switch (ss_idx) { case 0: res = mi->bmi[block].as_mv[ref].as_mv; break;

[CVE-2020-0478_1.diff] onyxc_int.h #18
- xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8); - xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8; - xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8); - xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8; + xd->mb_to_top_edge = -GET_MV_SUBPEL(mi_row * MI_SIZE); + xd->mb_to_bottom_edge = GET_MV_SUBPEL((mi_rows - bh - mi_row) * MI_SIZE); + xd->mb_to_left_edge = -GET_MV_SUBPEL((mi_col * MI_SIZE)); + xd->mb_to_right_edge = GET_MV_SUBPEL((mi_cols - bw - mi_col) * MI_SIZE); + + xd->mi_row = mi_row; + xd->mi_col = mi_col;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_onyxc_int.h
385
386
387
388
389
390
391
392
393
394
} static INLINE int calc_mi_size(int len) { // len is in mi units. return len + MI_BLOCK_SIZE; } static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile, int mi_row, int bh, int mi_col, int bw, int mi_rows, int mi_cols) {
+ show +
395
396
397
398
xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8); xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8; xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8); xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8;
+ show +
399
400
401
402
403
404
405
406
407
408
// Are edges available for intra prediction? xd->above_mi = (mi_row != 0) ? xd->mi[-xd->mi_stride] : NULL; xd->left_mi = (mi_col > tile->mi_col_start) ? xd->mi[-1] : NULL; } static INLINE void update_partition_context(MACROBLOCKD *xd, int mi_row, int mi_col, BLOCK_SIZE subsize, BLOCK_SIZE bsize) { PARTITION_CONTEXT *const above_ctx = xd->above_seg_context + mi_col;

[CVE-2020-0470_1.diff] onyxc_int.h #18
- xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8); - xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8; - xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8); - xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8; + xd->mb_to_top_edge = -GET_MV_SUBPEL(mi_row * MI_SIZE); + xd->mb_to_bottom_edge = GET_MV_SUBPEL((mi_rows - bh - mi_row) * MI_SIZE); + xd->mb_to_left_edge = -GET_MV_SUBPEL((mi_col * MI_SIZE)); + xd->mb_to_right_edge = GET_MV_SUBPEL((mi_cols - bw - mi_col) * MI_SIZE); + + xd->mi_row = mi_row; + xd->mi_col = mi_col;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vp9/common/vp9_onyxc_int.h
385
386
387
388
389
390
391
392
393
394
} static INLINE int calc_mi_size(int len) { // len is in mi units. return len + MI_BLOCK_SIZE; } static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile, int mi_row, int bh, int mi_col, int bw, int mi_rows, int mi_cols) {
+ show +
395
396
397
398
xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8); xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8; xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8); xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8;
+ show +
399
400
401
402
403
404
405
406
407
408
// Are edges available for intra prediction? xd->above_mi = (mi_row != 0) ? xd->mi[-xd->mi_stride] : NULL; xd->left_mi = (mi_col > tile->mi_col_start) ? xd->mi[-1] : NULL; } static INLINE void update_partition_context(MACROBLOCKD *xd, int mi_row, int mi_col, BLOCK_SIZE subsize, BLOCK_SIZE bsize) { PARTITION_CONTEXT *const above_ctx = xd->above_seg_context + mi_col;

[CVE-2020-0478_1.diff] debug_util.h #1
-void bitstream_queue_set_frame_write(int frame_idx); -int bitstream_queue_get_frame_write(void); -void bitstream_queue_set_frame_read(int frame_idx); -int bitstream_queue_get_frame_read(void); +void aom_bitstream_queue_set_frame_write(int frame_idx); +int aom_bitstream_queue_get_frame_writee(void); +void aom_bitstream_queue_set_frame_read(int frame_idx); +int aom_bitstream_queue_get_frame_read(void);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_util/vpx_debug_util.h
13
14
15
16
17
18
19
20
21
22
#include "./vpx_config.h" #include "vpx_dsp/prob.h" #ifdef __cplusplus extern "C" { #endif #if CONFIG_BITSTREAM_DEBUG || CONFIG_MISMATCH_DEBUG
+ show +
23
24
25
26
void bitstream_queue_set_frame_write(int frame_idx); int bitstream_queue_get_frame_write(void); void bitstream_queue_set_frame_read(int frame_idx); int bitstream_queue_get_frame_read(void);
+ show +
27
28
29
30
31
32
33
34
35
36
#endif #if CONFIG_BITSTREAM_DEBUG /* This is a debug tool used to detect bitstream error. On encoder side, it * pushes each bit and probability into a queue before the bit is written into * the Arithmetic coder. On decoder side, whenever a bit is read out from the * Arithmetic coder, it pops out the reference bit and probability from the * queue as well. If the two results do not match, this debug tool will report * an error. This tool can be used to pin down the bitstream error precisely. * By combining gdb's backtrace method, we can detect which module causes the

[CVE-2020-0470_1.diff] debug_util.h #1
-void bitstream_queue_set_frame_write(int frame_idx); -int bitstream_queue_get_frame_write(void); -void bitstream_queue_set_frame_read(int frame_idx); -int bitstream_queue_get_frame_read(void); +void aom_bitstream_queue_set_frame_write(int frame_idx); +int aom_bitstream_queue_get_frame_writee(void); +void aom_bitstream_queue_set_frame_read(int frame_idx); +int aom_bitstream_queue_get_frame_read(void);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_util/vpx_debug_util.h
13
14
15
16
17
18
19
20
21
22
#include "./vpx_config.h" #include "vpx_dsp/prob.h" #ifdef __cplusplus extern "C" { #endif #if CONFIG_BITSTREAM_DEBUG || CONFIG_MISMATCH_DEBUG
+ show +
23
24
25
26
void bitstream_queue_set_frame_write(int frame_idx); int bitstream_queue_get_frame_write(void); void bitstream_queue_set_frame_read(int frame_idx); int bitstream_queue_get_frame_read(void);
+ show +
27
28
29
30
31
32
33
34
35
36
#endif #if CONFIG_BITSTREAM_DEBUG /* This is a debug tool used to detect bitstream error. On encoder side, it * pushes each bit and probability into a queue before the bit is written into * the Arithmetic coder. On decoder side, whenever a bit is read out from the * Arithmetic coder, it pops out the reference bit and probability from the * queue as well. If the two results do not match, this debug tool will report * an error. This tool can be used to pin down the bitstream error precisely. * By combining gdb's backtrace method, we can detect which module causes the

[CVE-2020-0478_1.diff] debug_util.c #1
+ if(BUILD_SHARED_LIBS) + target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_util>) + endif() -void bitstream_queue_set_frame_write(int frame_idx) { frame_idx_w = frame_idx; } +void aom_bitstream_queue_set_frame_write(int frame_idx) { + frame_idx_w = frame_idx; +} -int bitstream_queue_get_frame_write(void) { return frame_idx_w; } +int aom_bitstream_queue_get_frame_writee(void) { return frame_idx_w; } -void bitstream_queue_set_frame_read(int frame_idx) { frame_idx_r = frame_idx; } +void aom_bitstream_queue_set_frame_read(int frame_idx) { + frame_idx_r = frame_idx; +} -int bitstream_queue_get_frame_read(void) { return frame_idx_r; } +int aom_bitstream_queue_get_frame_read(void) { return frame_idx_r; }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_util/vpx_debug_util.c
10
11
12
13
14
15
16
17
18
19
#include <assert.h> #include <stdio.h> #include <string.h> #include "vpx_util/vpx_debug_util.h" #if CONFIG_BITSTREAM_DEBUG || CONFIG_MISMATCH_DEBUG static int frame_idx_w = 0; static int frame_idx_r = 0;
+ show +
20
21
22
23
24
25
26
void bitstream_queue_set_frame_write(int frame_idx) { frame_idx_w = frame_idx; } int bitstream_queue_get_frame_write(void) { return frame_idx_w; } void bitstream_queue_set_frame_read(int frame_idx) { frame_idx_r = frame_idx; } int bitstream_queue_get_frame_read(void) { return frame_idx_r; }
+ show +
27
28
29
30
31
32
33
34
35
36
#endif #if CONFIG_BITSTREAM_DEBUG #define QUEUE_MAX_SIZE 2000000 static int result_queue[QUEUE_MAX_SIZE]; static int prob_queue[QUEUE_MAX_SIZE]; static int queue_r = 0; static int queue_w = 0; static int queue_prev_w = -1;

[CVE-2020-0470_1.diff] debug_util.c #1
+ if(BUILD_SHARED_LIBS) + target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_util>) + endif() -void bitstream_queue_set_frame_write(int frame_idx) { frame_idx_w = frame_idx; } +void aom_bitstream_queue_set_frame_write(int frame_idx) { + frame_idx_w = frame_idx; +} -int bitstream_queue_get_frame_write(void) { return frame_idx_w; } +int aom_bitstream_queue_get_frame_writee(void) { return frame_idx_w; } -void bitstream_queue_set_frame_read(int frame_idx) { frame_idx_r = frame_idx; } +void aom_bitstream_queue_set_frame_read(int frame_idx) { + frame_idx_r = frame_idx; +} -int bitstream_queue_get_frame_read(void) { return frame_idx_r; } +int aom_bitstream_queue_get_frame_read(void) { return frame_idx_r; }
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_util/vpx_debug_util.c
10
11
12
13
14
15
16
17
18
19
#include <assert.h> #include <stdio.h> #include <string.h> #include "vpx_util/vpx_debug_util.h" #if CONFIG_BITSTREAM_DEBUG || CONFIG_MISMATCH_DEBUG static int frame_idx_w = 0; static int frame_idx_r = 0;
+ show +
20
21
22
23
24
25
26
void bitstream_queue_set_frame_write(int frame_idx) { frame_idx_w = frame_idx; } int bitstream_queue_get_frame_write(void) { return frame_idx_w; } void bitstream_queue_set_frame_read(int frame_idx) { frame_idx_r = frame_idx; } int bitstream_queue_get_frame_read(void) { return frame_idx_r; }
+ show +
27
28
29
30
31
32
33
34
35
36
#endif #if CONFIG_BITSTREAM_DEBUG #define QUEUE_MAX_SIZE 2000000 static int result_queue[QUEUE_MAX_SIZE]; static int prob_queue[QUEUE_MAX_SIZE]; static int queue_r = 0; static int queue_w = 0; static int queue_prev_w = -1;

[CVE-2020-0478_1.diff] psnrhvs.c #6
- s_gmean += dct_s[i * 8 + j]; - d_gmean += dct_d[i * 8 + j]; - s_means[sub] += dct_s[i * 8 + j]; - d_means[sub] += dct_d[i * 8 + j]; + dct_d[i * 8 + j] += (int)(delt + 0.5f); - s_gmean /= 64.f; - d_gmean /= 64.f; - for (i = 0; i < 4; i++) s_means[i] /= 16.f; - for (i = 0; i < 4; i++) d_means[i] /= 16.f; - for (i = 0; i < 8; i++) { - for (j = 0; j < 8; j++) { - int sub = ((i & 12) >> 2) + ((j & 12) >> 1); - s_gvar += (dct_s[i * 8 + j] - s_gmean) * (dct_s[i * 8 + j] - s_gmean); - d_gvar += (dct_d[i * 8 + j] - d_gmean) * (dct_d[i * 8 + j] - d_gmean); - s_vars[sub] += (dct_s[i * 8 + j] - s_means[sub]) * - (dct_s[i * 8 + j] - s_means[sub]); - d_vars[sub] += (dct_d[i * 8 + j] - d_means[sub]) * - (dct_d[i * 8 + j] - d_means[sub]); + for (i = 1; i < 7; i++) { + for (j = 1; j < 7; j++) { + s_gx = (dct_s[(i - 1) * 8 + j - 1] * 3 - + dct_s[(i - 1) * 8 + j + 1] * 3 + dct_s[i * 8 + j - 1] * 10 - + dct_s[i * 8 + j + 1] * 10 + dct_s[(i + 1) * 8 + j - 1] * 3 - + dct_s[(i + 1) * 8 + j + 1] * 3) / + (pix_max * 16.f); + s_gy = (dct_s[(i - 1) * 8 + j - 1] * 3 - + dct_s[(i + 1) * 8 + j - 1] * 3 + dct_s[(i - 1) * 8 + j] * 10 - + dct_s[(i + 1) * 8 + j] * 10 + dct_s[(i - 1) * 8 + j + 1] * 3 - + dct_s[(i + 1) * 8 + j + 1] * 3) / + (pix_max * 16.f); + g = sqrt(s_gx * s_gx + s_gy * s_gy); + if (g > 0.1f) n++; + s_gmean += g; - s_gvar *= 1 / 63.f * 64; - d_gvar *= 1 / 63.f * 64; - for (i = 0; i < 4; i++) s_vars[i] *= 1 / 15.f * 16; - for (i = 0; i < 4; i++) d_vars[i] *= 1 / 15.f * 16; - if (s_gvar > 0) - s_gvar = (s_vars[0] + s_vars[1] + s_vars[2] + s_vars[3]) / s_gvar; - if (d_gvar > 0) - d_gvar = (d_vars[0] + d_vars[1] + d_vars[2] + d_vars[3]) / d_gvar; + s_gvar = 1.f / (36 - n + 1) * s_gmean / 36.f;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/psnrhvs.c
180
181
182
183
184
185
186
187
188
189
for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { int sub = ((i & 12) >> 2) + ((j & 12) >> 1); if (bit_depth == 8 && _shift == 0) { dct_s[i * 8 + j] = _src8[(y + i) * _systride + (j + x)]; dct_d[i * 8 + j] = _dst8[(y + i) * _dystride + (j + x)]; } else if (bit_depth == 10 || bit_depth == 12) { dct_s[i * 8 + j] = _src16[(y + i) * _systride + (j + x)] >> _shift; dct_d[i * 8 + j] = _dst16[(y + i) * _dystride + (j + x)] >> _shift; }
+ show +
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
s_gmean += dct_s[i * 8 + j]; d_gmean += dct_d[i * 8 + j]; s_means[sub] += dct_s[i * 8 + j]; d_means[sub] += dct_d[i * 8 + j]; } } s_gmean /= 64.f; d_gmean /= 64.f; for (i = 0; i < 4; i++) s_means[i] /= 16.f; for (i = 0; i < 4; i++) d_means[i] /= 16.f; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { int sub = ((i & 12) >> 2) + ((j & 12) >> 1); s_gvar += (dct_s[i * 8 + j] - s_gmean) * (dct_s[i * 8 + j] - s_gmean); d_gvar += (dct_d[i * 8 + j] - d_gmean) * (dct_d[i * 8 + j] - d_gmean); s_vars[sub] += (dct_s[i * 8 + j] - s_means[sub]) * (dct_s[i * 8 + j] - s_means[sub]); d_vars[sub] += (dct_d[i * 8 + j] - d_means[sub]) * (dct_d[i * 8 + j] - d_means[sub]); } } s_gvar *= 1 / 63.f * 64; d_gvar *= 1 / 63.f * 64; for (i = 0; i < 4; i++) s_vars[i] *= 1 / 15.f * 16; for (i = 0; i < 4; i++) d_vars[i] *= 1 / 15.f * 16; if (s_gvar > 0) s_gvar = (s_vars[0] + s_vars[1] + s_vars[2] + s_vars[3]) / s_gvar; if (d_gvar > 0) d_gvar = (d_vars[0] + d_vars[1] + d_vars[2] + d_vars[3]) / d_gvar;
+ show +
219
220
221
222
223
224
225
226
227
228
#if CONFIG_VP9_HIGHBITDEPTH if (bit_depth == 10 || bit_depth == 12) { hbd_od_bin_fdct8x8(dct_s_coef, 8, dct_s, 8); hbd_od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); } #endif if (bit_depth == 8) { od_bin_fdct8x8(dct_s_coef, 8, dct_s, 8); od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); }

[CVE-2020-0478_1.diff] psnrhvs.c #7
- for (i = 0; i < 8; i++) - for (j = (i == 0); j < 8; j++) - d_mask += dct_d_coef[i * 8 + j] * dct_d_coef[i * 8 + j] * mask[i][j]; - s_mask = sqrt(s_mask * s_gvar) / 32.f; - d_mask = sqrt(d_mask * d_gvar) / 32.f; - if (d_mask > s_mask) s_mask = d_mask; + s_mask = sqrt(s_mask * s_gvar) / 8.f;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/psnrhvs.c
222
223
224
225
226
227
228
229
230
231
hbd_od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); } #endif if (bit_depth == 8) { od_bin_fdct8x8(dct_s_coef, 8, dct_s, 8); od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); } for (i = 0; i < 8; i++) for (j = (i == 0); j < 8; j++) s_mask += dct_s_coef[i * 8 + j] * dct_s_coef[i * 8 + j] * mask[i][j];
+ show +
232
233
234
235
236
237
for (i = 0; i < 8; i++) for (j = (i == 0); j < 8; j++) d_mask += dct_d_coef[i * 8 + j] * dct_d_coef[i * 8 + j] * mask[i][j]; s_mask = sqrt(s_mask * s_gvar) / 32.f; d_mask = sqrt(d_mask * d_gvar) / 32.f; if (d_mask > s_mask) s_mask = d_mask;
+ show +
238
239
240
241
242
243
244
245
246
247
for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { double err; err = fabs((double)(dct_s_coef[i * 8 + j] - dct_d_coef[i * 8 + j])); if (i != 0 || j != 0) err = err < s_mask / mask[i][j] ? 0 : err - s_mask / mask[i][j]; ret += (err * _csf[i][j]) * (err * _csf[i][j]); pixels++; } }

[CVE-2020-0470_1.diff] psnrhvs.c #6
- s_gmean += dct_s[i * 8 + j]; - d_gmean += dct_d[i * 8 + j]; - s_means[sub] += dct_s[i * 8 + j]; - d_means[sub] += dct_d[i * 8 + j]; + dct_d[i * 8 + j] += (int)(delt + 0.5f); - s_gmean /= 64.f; - d_gmean /= 64.f; - for (i = 0; i < 4; i++) s_means[i] /= 16.f; - for (i = 0; i < 4; i++) d_means[i] /= 16.f; - for (i = 0; i < 8; i++) { - for (j = 0; j < 8; j++) { - int sub = ((i & 12) >> 2) + ((j & 12) >> 1); - s_gvar += (dct_s[i * 8 + j] - s_gmean) * (dct_s[i * 8 + j] - s_gmean); - d_gvar += (dct_d[i * 8 + j] - d_gmean) * (dct_d[i * 8 + j] - d_gmean); - s_vars[sub] += (dct_s[i * 8 + j] - s_means[sub]) * - (dct_s[i * 8 + j] - s_means[sub]); - d_vars[sub] += (dct_d[i * 8 + j] - d_means[sub]) * - (dct_d[i * 8 + j] - d_means[sub]); + for (i = 1; i < 7; i++) { + for (j = 1; j < 7; j++) { + s_gx = (dct_s[(i - 1) * 8 + j - 1] * 3 - + dct_s[(i - 1) * 8 + j + 1] * 3 + dct_s[i * 8 + j - 1] * 10 - + dct_s[i * 8 + j + 1] * 10 + dct_s[(i + 1) * 8 + j - 1] * 3 - + dct_s[(i + 1) * 8 + j + 1] * 3) / + (pix_max * 16.f); + s_gy = (dct_s[(i - 1) * 8 + j - 1] * 3 - + dct_s[(i + 1) * 8 + j - 1] * 3 + dct_s[(i - 1) * 8 + j] * 10 - + dct_s[(i + 1) * 8 + j] * 10 + dct_s[(i - 1) * 8 + j + 1] * 3 - + dct_s[(i + 1) * 8 + j + 1] * 3) / + (pix_max * 16.f); + g = sqrt(s_gx * s_gx + s_gy * s_gy); + if (g > 0.1f) n++; + s_gmean += g; - s_gvar *= 1 / 63.f * 64; - d_gvar *= 1 / 63.f * 64; - for (i = 0; i < 4; i++) s_vars[i] *= 1 / 15.f * 16; - for (i = 0; i < 4; i++) d_vars[i] *= 1 / 15.f * 16; - if (s_gvar > 0) - s_gvar = (s_vars[0] + s_vars[1] + s_vars[2] + s_vars[3]) / s_gvar; - if (d_gvar > 0) - d_gvar = (d_vars[0] + d_vars[1] + d_vars[2] + d_vars[3]) / d_gvar; + s_gvar = 1.f / (36 - n + 1) * s_gmean / 36.f;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/psnrhvs.c
180
181
182
183
184
185
186
187
188
189
for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { int sub = ((i & 12) >> 2) + ((j & 12) >> 1); if (bit_depth == 8 && _shift == 0) { dct_s[i * 8 + j] = _src8[(y + i) * _systride + (j + x)]; dct_d[i * 8 + j] = _dst8[(y + i) * _dystride + (j + x)]; } else if (bit_depth == 10 || bit_depth == 12) { dct_s[i * 8 + j] = _src16[(y + i) * _systride + (j + x)] >> _shift; dct_d[i * 8 + j] = _dst16[(y + i) * _dystride + (j + x)] >> _shift; }
+ show +
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
s_gmean += dct_s[i * 8 + j]; d_gmean += dct_d[i * 8 + j]; s_means[sub] += dct_s[i * 8 + j]; d_means[sub] += dct_d[i * 8 + j]; } } s_gmean /= 64.f; d_gmean /= 64.f; for (i = 0; i < 4; i++) s_means[i] /= 16.f; for (i = 0; i < 4; i++) d_means[i] /= 16.f; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { int sub = ((i & 12) >> 2) + ((j & 12) >> 1); s_gvar += (dct_s[i * 8 + j] - s_gmean) * (dct_s[i * 8 + j] - s_gmean); d_gvar += (dct_d[i * 8 + j] - d_gmean) * (dct_d[i * 8 + j] - d_gmean); s_vars[sub] += (dct_s[i * 8 + j] - s_means[sub]) * (dct_s[i * 8 + j] - s_means[sub]); d_vars[sub] += (dct_d[i * 8 + j] - d_means[sub]) * (dct_d[i * 8 + j] - d_means[sub]); } } s_gvar *= 1 / 63.f * 64; d_gvar *= 1 / 63.f * 64; for (i = 0; i < 4; i++) s_vars[i] *= 1 / 15.f * 16; for (i = 0; i < 4; i++) d_vars[i] *= 1 / 15.f * 16; if (s_gvar > 0) s_gvar = (s_vars[0] + s_vars[1] + s_vars[2] + s_vars[3]) / s_gvar; if (d_gvar > 0) d_gvar = (d_vars[0] + d_vars[1] + d_vars[2] + d_vars[3]) / d_gvar;
+ show +
219
220
221
222
223
224
225
226
227
228
#if CONFIG_VP9_HIGHBITDEPTH if (bit_depth == 10 || bit_depth == 12) { hbd_od_bin_fdct8x8(dct_s_coef, 8, dct_s, 8); hbd_od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); } #endif if (bit_depth == 8) { od_bin_fdct8x8(dct_s_coef, 8, dct_s, 8); od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); }

[CVE-2020-0470_1.diff] psnrhvs.c #7
- for (i = 0; i < 8; i++) - for (j = (i == 0); j < 8; j++) - d_mask += dct_d_coef[i * 8 + j] * dct_d_coef[i * 8 + j] * mask[i][j]; - s_mask = sqrt(s_mask * s_gvar) / 32.f; - d_mask = sqrt(d_mask * d_gvar) / 32.f; - if (d_mask > s_mask) s_mask = d_mask; + s_mask = sqrt(s_mask * s_gvar) / 8.f;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/psnrhvs.c
222
223
224
225
226
227
228
229
230
231
hbd_od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); } #endif if (bit_depth == 8) { od_bin_fdct8x8(dct_s_coef, 8, dct_s, 8); od_bin_fdct8x8(dct_d_coef, 8, dct_d, 8); } for (i = 0; i < 8; i++) for (j = (i == 0); j < 8; j++) s_mask += dct_s_coef[i * 8 + j] * dct_s_coef[i * 8 + j] * mask[i][j];
+ show +
232
233
234
235
236
237
for (i = 0; i < 8; i++) for (j = (i == 0); j < 8; j++) d_mask += dct_d_coef[i * 8 + j] * dct_d_coef[i * 8 + j] * mask[i][j]; s_mask = sqrt(s_mask * s_gvar) / 32.f; d_mask = sqrt(d_mask * d_gvar) / 32.f; if (d_mask > s_mask) s_mask = d_mask;
+ show +
238
239
240
241
242
243
244
245
246
247
for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { double err; err = fabs((double)(dct_s_coef[i * 8 + j] - dct_d_coef[i * 8 + j])); if (i != 0 || j != 0) err = err < s_mask / mask[i][j] ? 0 : err - s_mask / mask[i][j]; ret += (err * _csf[i][j]) * (err * _csf[i][j]); pixels++; } }

[CVE-2020-0478_1.diff] transpose_neon.h #3
- const int16x8x2_t d0 = vpx_vtrnq_s64_to_s16(c0.val[0], c2.val[0]); - const int16x8x2_t d1 = vpx_vtrnq_s64_to_s16(c1.val[0], c3.val[0]); - const int16x8x2_t d2 = vpx_vtrnq_s64_to_s16(c0.val[1], c2.val[1]); - const int16x8x2_t d3 = vpx_vtrnq_s64_to_s16(c1.val[1], c3.val[1]); + const int16x8x2_t d0 = aom_vtrnq_s64_to_s16(c0.val[0], c2.val[0]); + const int16x8x2_t d1 = aom_vtrnq_s64_to_s16(c1.val[0], c3.val[0]); + const int16x8x2_t d2 = aom_vtrnq_s64_to_s16(c0.val[1], c2.val[1]); + const int16x8x2_t d3 = aom_vtrnq_s64_to_s16(c1.val[1], c3.val[1]);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/arm/transpose_neon.h
617
618
619
620
621
622
623
624
625
626
// Swap 64 bit elements resulting in: // d0.val[0]: 00 10 20 30 40 50 60 70 // d0.val[1]: 04 14 24 34 44 54 64 74 // d1.val[0]: 01 11 21 31 41 51 61 71 // d1.val[1]: 05 15 25 35 45 55 65 75 // d2.val[0]: 02 12 22 32 42 52 62 72 // d2.val[1]: 06 16 26 36 46 56 66 76 // d3.val[0]: 03 13 23 33 43 53 63 73 // d3.val[1]: 07 17 27 37 47 57 67 77
+ show +
627
628
629
630
const int16x8x2_t d0 = vpx_vtrnq_s64_to_s16(c0.val[0], c2.val[0]); const int16x8x2_t d1 = vpx_vtrnq_s64_to_s16(c1.val[0], c3.val[0]); const int16x8x2_t d2 = vpx_vtrnq_s64_to_s16(c0.val[1], c2.val[1]); const int16x8x2_t d3 = vpx_vtrnq_s64_to_s16(c1.val[1], c3.val[1]);
+ show +
631
632
633
634
635
636
637
638
639
640
*a0 = d0.val[0]; *a1 = d1.val[0]; *a2 = d2.val[0]; *a3 = d3.val[0]; *a4 = d0.val[1]; *a5 = d1.val[1]; *a6 = d2.val[1]; *a7 = d3.val[1]; }

[CVE-2020-0470_1.diff] transpose_neon.h #3
- const int16x8x2_t d0 = vpx_vtrnq_s64_to_s16(c0.val[0], c2.val[0]); - const int16x8x2_t d1 = vpx_vtrnq_s64_to_s16(c1.val[0], c3.val[0]); - const int16x8x2_t d2 = vpx_vtrnq_s64_to_s16(c0.val[1], c2.val[1]); - const int16x8x2_t d3 = vpx_vtrnq_s64_to_s16(c1.val[1], c3.val[1]); + const int16x8x2_t d0 = aom_vtrnq_s64_to_s16(c0.val[0], c2.val[0]); + const int16x8x2_t d1 = aom_vtrnq_s64_to_s16(c1.val[0], c3.val[0]); + const int16x8x2_t d2 = aom_vtrnq_s64_to_s16(c0.val[1], c2.val[1]); + const int16x8x2_t d3 = aom_vtrnq_s64_to_s16(c1.val[1], c3.val[1]);
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/arm/transpose_neon.h
617
618
619
620
621
622
623
624
625
626
// Swap 64 bit elements resulting in: // d0.val[0]: 00 10 20 30 40 50 60 70 // d0.val[1]: 04 14 24 34 44 54 64 74 // d1.val[0]: 01 11 21 31 41 51 61 71 // d1.val[1]: 05 15 25 35 45 55 65 75 // d2.val[0]: 02 12 22 32 42 52 62 72 // d2.val[1]: 06 16 26 36 46 56 66 76 // d3.val[0]: 03 13 23 33 43 53 63 73 // d3.val[1]: 07 17 27 37 47 57 67 77
+ show +
627
628
629
630
const int16x8x2_t d0 = vpx_vtrnq_s64_to_s16(c0.val[0], c2.val[0]); const int16x8x2_t d1 = vpx_vtrnq_s64_to_s16(c1.val[0], c3.val[0]); const int16x8x2_t d2 = vpx_vtrnq_s64_to_s16(c0.val[1], c2.val[1]); const int16x8x2_t d3 = vpx_vtrnq_s64_to_s16(c1.val[1], c3.val[1]);
+ show +
631
632
633
634
635
636
637
638
639
640
*a0 = d0.val[0]; *a1 = d1.val[0]; *a2 = d2.val[0]; *a3 = d3.val[0]; *a4 = d0.val[1]; *a5 = d1.val[1]; *a6 = d2.val[1]; *a7 = d3.val[1]; }

[CVE-2020-0478_1.diff] adaptive_quantize_sse2.c #14
- - eob0 = scan_for_eob(&qcoeff0, &qcoeff1, cmp_mask0, cmp_mask1, iscan, index, - zero); - eob = _mm_max_epi16(eob, eob0); + if (is_found0) non_zero_count = calculate_non_zero_count(mask0); + if (is_found1) + non_zero_count_prescan_add_zero = calculate_non_zero_count(mask1); - *eob_ptr = accumulate_eob(eob); + for (int i = non_zero_count_prescan_add_zero - 1; i >= non_zero_count; i--) { + const int rc = scan[i]; + qcoeff_ptr[rc] = 0; + dqcoeff_ptr[rc] = 0; + } + for (int i = non_zero_count - 1; i >= 0; i--) { + const int rc = scan[i]; + if (qcoeff_ptr[rc]) { + eob = i; + break; + } + } + + *eob_ptr = eob + 1;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/x86/quantize_avx.c
129
130
131
132
133
134
135
136
137
138
qcoeff0 = _mm_and_si128(qcoeff0, cmp_mask0); qcoeff1 = _mm_and_si128(qcoeff1, cmp_mask1); store_tran_low(qcoeff0, qcoeff_ptr + index); store_tran_low(qcoeff1, qcoeff_ptr + index + 8); calculate_dqcoeff_and_store(qcoeff0, dequant, dqcoeff_ptr + index); calculate_dqcoeff_and_store(qcoeff1, dequant, dqcoeff_ptr + index + 8);
+ show +
139
140
141
142
143
144
eob0 = scan_for_eob(&qcoeff0, &qcoeff1, cmp_mask0, cmp_mask1, iscan, index, zero); eob = _mm_max_epi16(eob, eob0); } *eob_ptr = accumulate_eob(eob);
+ show +
145
146
147
148
149
150
151
152
153
154
} void vpx_quantize_b_32x32_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan) {

[CVE-2020-0470_1.diff] adaptive_quantize_sse2.c #14
- - eob0 = scan_for_eob(&qcoeff0, &qcoeff1, cmp_mask0, cmp_mask1, iscan, index, - zero); - eob = _mm_max_epi16(eob, eob0); + if (is_found0) non_zero_count = calculate_non_zero_count(mask0); + if (is_found1) + non_zero_count_prescan_add_zero = calculate_non_zero_count(mask1); - *eob_ptr = accumulate_eob(eob); + for (int i = non_zero_count_prescan_add_zero - 1; i >= non_zero_count; i--) { + const int rc = scan[i]; + qcoeff_ptr[rc] = 0; + dqcoeff_ptr[rc] = 0; + } + for (int i = non_zero_count - 1; i >= 0; i--) { + const int rc = scan[i]; + if (qcoeff_ptr[rc]) { + eob = i; + break; + } + } + + *eob_ptr = eob + 1;
/media/esteban/ACOS/dotOS/external/libvpx/libvpx/vpx_dsp/x86/quantize_avx.c
129
130
131
132
133
134
135
136
137
138
qcoeff0 = _mm_and_si128(qcoeff0, cmp_mask0); qcoeff1 = _mm_and_si128(qcoeff1, cmp_mask1); store_tran_low(qcoeff0, qcoeff_ptr + index); store_tran_low(qcoeff1, qcoeff_ptr + index + 8); calculate_dqcoeff_and_store(qcoeff0, dequant, dqcoeff_ptr + index); calculate_dqcoeff_and_store(qcoeff1, dequant, dqcoeff_ptr + index + 8);
+ show +
139
140
141
142
143
144
eob0 = scan_for_eob(&qcoeff0, &qcoeff1, cmp_mask0, cmp_mask1, iscan, index, zero); eob = _mm_max_epi16(eob, eob0); } *eob_ptr = accumulate_eob(eob);
+ show +
145
146
147
148
149
150
151
152
153
154
} void vpx_quantize_b_32x32_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan) {

[CVE-2020-13871_1.diff] sqlite3.c #2
- int iTable; /* Cursor number of the source table */ - int iColumn; /* Column number within the source table */ - int iSorterColumn; /* Column number in the sorting index */ - int iMem; /* Memory location that acts as accumulator */ + int iTable; /* Cursor number of the source table */ + int iMem; /* Memory location that acts as accumulator */ + i16 iColumn; /* Column number within the source table */ + i16 iSorterColumn; /* Column number in the sorting index */
/media/esteban/ACOS/dotOS/external/python/pycparser/utils/benchmark/inputs/sqlite-btree.c.ppout
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
u8 useSortingIdx; int sortingIdx; int sortingIdxPTab; int nSortingColumn; int mnReg, mxReg; ExprList *pGroupBy; struct AggInfo_col { Table *pTab;
+ show +
2386
2387
2388
2389
int iTable; int iColumn; int iSorterColumn; int iMem;
+ show +
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
Expr *pExpr; } *aCol; int nColumn; int nAccumulator; struct AggInfo_func { Expr *pExpr; FuncDef *pFunc; int iMem;

[CVE-2020-13871_1.diff] sqlite3.c #2
- int iTable; /* Cursor number of the source table */ - int iColumn; /* Column number within the source table */ - int iSorterColumn; /* Column number in the sorting index */ - int iMem; /* Memory location that acts as accumulator */ + int iTable; /* Cursor number of the source table */ + int iMem; /* Memory location that acts as accumulator */ + i16 iColumn; /* Column number within the source table */ + i16 iSorterColumn; /* Column number in the sorting index */
/media/esteban/ACOS/dotOS/external/python/pycparser/utils/benchmark/inputs/sqlite-btree.c.ppout
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
u8 useSortingIdx; int sortingIdx; int sortingIdxPTab; int nSortingColumn; int mnReg, mxReg; ExprList *pGroupBy; struct AggInfo_col { Table *pTab;
+ show +
2386
2387
2388
2389
int iTable; int iColumn; int iSorterColumn; int iMem;
+ show +
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
Expr *pExpr; } *aCol; int nColumn; int nAccumulator; struct AggInfo_func { Expr *pExpr; FuncDef *pFunc; int iMem;

[CVE-2017-13197_1.diff] ihevcd_parse_slice.c #1
- if((1 == ps_slice_hdr->i1_dependent_slice_flag) && (!((ps_codec->s_parse.i4_ctb_tile_x == 0) && (ps_codec->s_parse.i4_ctb_tile_y == 0)))) + if(0 == ps_codec->i4_slice_error) - if((0 == ps_pps->i1_entropy_coding_sync_enabled_flag) || (ps_pps->i1_entropy_coding_sync_enabled_flag && (0 != ps_codec->s_parse.i4_ctb_x))) + if((1 == ps_slice_hdr->i1_dependent_slice_flag) && (!((ps_codec->s_parse.i4_ctb_tile_x == 0) && (ps_codec->s_parse.i4_ctb_tile_y == 0)))) - ihevcd_cabac_reset(&ps_codec->s_parse.s_cabac, - &ps_codec->s_parse.s_bitstrm); + if((0 == ps_pps->i1_entropy_coding_sync_enabled_flag) || (ps_pps->i1_entropy_coding_sync_enabled_flag && (0 != ps_codec->s_parse.i4_ctb_x))) + { + ihevcd_cabac_reset(&ps_codec->s_parse.s_cabac, + &ps_codec->s_parse.s_bitstrm); + } - } - else if((0 == ps_pps->i1_entropy_coding_sync_enabled_flag) || (ps_pps->i1_entropy_coding_sync_enabled_flag && (0 != ps_codec->s_parse.i4_ctb_x))) - { - ret = ihevcd_cabac_init(&ps_codec->s_parse.s_cabac, - &ps_codec->s_parse.s_bitstrm, - slice_qp, - cabac_init_idc, - &gau1_ihevc_cab_ctxts[cabac_init_idc][slice_qp][0]); - if(ret != (IHEVCD_ERROR_T)IHEVCD_SUCCESS) + else if((0 == ps_pps->i1_entropy_coding_sync_enabled_flag) || (ps_pps->i1_entropy_coding_sync_enabled_flag && (0 != ps_codec->s_parse.i4_ctb_x))) - ps_codec->i4_slice_error = 1; - end_of_slice_flag = 1; - ret = (IHEVCD_ERROR_T)IHEVCD_SUCCESS; + ret = ihevcd_cabac_init(&ps_codec->s_parse.s_cabac, + &ps_codec->s_parse.s_bitstrm, + slice_qp, + cabac_init_idc, + &gau1_ihevc_cab_ctxts[cabac_init_idc][slice_qp][0]); + if(ret != (IHEVCD_ERROR_T)IHEVCD_SUCCESS) + { + ps_codec->i4_slice_error = 1; + end_of_slice_flag = 1; + ret = (IHEVCD_ERROR_T)IHEVCD_SUCCESS; + }
/media/esteban/ACOS/dotOS/external/libhevc/decoder/ihevcd_parse_slice.c
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
if((0 == ps_slice_hdr->i1_dependent_slice_flag) || ((1 == ps_slice_hdr->i1_dependent_slice_flag) && ((0 == ps_codec->s_parse.i4_ctb_tile_x) && (0 == ps_codec->s_parse.i4_ctb_tile_y)))) { ps_codec->s_parse.u4_qp = slice_qp; } /*Cabac init at the beginning of a slice*/ //If the slice is a dependent slice, not present at the start of a tile if(0 == ps_codec->i4_slice_error) {
+ show +
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
if((1 == ps_slice_hdr->i1_dependent_slice_flag) && (!((ps_codec->s_parse.i4_ctb_tile_x == 0) && (ps_codec->s_parse.i4_ctb_tile_y == 0)))) { if((0 == ps_pps->i1_entropy_coding_sync_enabled_flag) || (ps_pps->i1_entropy_coding_sync_enabled_flag && (0 != ps_codec->s_parse.i4_ctb_x))) { ihevcd_cabac_reset(&ps_codec->s_parse.s_cabac, &ps_codec->s_parse.s_bitstrm); } } else if((0 == ps_pps->i1_entropy_coding_sync_enabled_flag) || (ps_pps->i1_entropy_coding_sync_enabled_flag && (0 != ps_codec->s_parse.i4_ctb_x))) { ret = ihevcd_cabac_init(&ps_codec->s_parse.s_cabac, &ps_codec->s_parse.s_bitstrm, slice_qp, cabac_init_idc, &gau1_ihevc_cab_ctxts[cabac_init_idc][slice_qp][0]); if(ret != (IHEVCD_ERROR_T)IHEVCD_SUCCESS) { ps_codec->i4_slice_error = 1; end_of_slice_flag = 1; ret = (IHEVCD_ERROR_T)IHEVCD_SUCCESS;
+ show +
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
} } } do { { WORD32 cur_ctb_idx = ps_codec->s_parse.i4_ctb_x

[CVE-2014-9028_1.diff] stream_encoder_framing.c #3
-#ifdef max -#undef max -#endif -#define max(x,y) ((x)>(y)?(x):(y)) -
/media/esteban/ACOS/dotOS/external/flac/src/flac/encode.c
33
34
35
36
37
38
39
40
41
42
#include "share/grabbag.h" #include "share/compat.h" #include "share/private.h" #include "share/safe_str.h" #include "encode.h" #ifdef min #undef min #endif #define min(x,y) ((x)<(y)?(x):(y))
+ show +
43
44
45
46
#ifdef max #undef max #endif #define max(x,y) ((x)>(y)?(x):(y))
+ show +
47
48
49
50
51
52
53
54
55
56
/* this MUST be >= 588 so that sector aligning can take place with one read */ /* this MUST be < 2^sizeof(size_t) / ( FLAC__MAX_CHANNELS * (FLAC__MAX_BITS_PER_SAMPLE/8) ) */ #define CHUNK_OF_SAMPLES 2048 typedef struct { uint32_t sample_rate; uint32_t channels; uint32_t bits_per_sample; /* width of sample point, including 'shift' bits, valid bps is bits_per_sample-shift */ uint32_t shift; /* # of LSBs samples have been shifted left by */

[CVE-2018-9527_1.diff] floor0.c #5
- ogg_int32_t *lsp,int m, - ogg_int32_t amp, - ogg_int32_t ampoffset, - ogg_int32_t nyq){ + ogg_int32_t *lsp,int m, + ogg_int32_t amp, + ogg_int32_t ampoffset, + ogg_int32_t nyq){
/media/esteban/ACOS/dotOS/external/tremolo/Tremolo/floor0.c
143
144
145
146
147
148
149
150
151
152
static const unsigned char MLOOP_2[64]={ 0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7, 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, }; static const unsigned char MLOOP_3[8]={0,1,2,2,3,3,3,3}; void vorbis_lsp_to_curve(ogg_int32_t *curve,int n,int ln,
+ show +
153
154
155
156
ogg_int32_t *lsp,int m, ogg_int32_t amp, ogg_int32_t ampoffset, ogg_int32_t nyq){
+ show +
157
158
159
160
161
162
163
164
165
166
/* 0 <= m < 256 */ /* set up for using all int later */ int i; int ampoffseti=ampoffset*4096; int ampi=amp; ogg_int32_t *ilsp=(ogg_int32_t *)alloca(m*sizeof(*ilsp)); ogg_uint32_t inyq= (1UL<<31) / toBARK(nyq);

[CVE-2017-0814_1.diff] codebook.c #4
- ogg_uint32_t entry=marker[length]; - long chase=0; - if(count && !entry)return -1; /* overpopulated tree! */ + ogg_uint32_t entry=marker[length]; + long chase=0; + if(count && !entry)return -1; /* overpopulated tree! */ - /* chase the tree as far as it's already populated, fill in past */ - for(j=0;j<length-1;j++){ - int bit=(entry>>(length-j-1))&1; - if(chase>=top){ - if (chase < 0 || chase >= n) return 1; - top++; - r[chase*2]=top; - r[chase*2+1]=0; - }else - if (chase < 0 || chase >= n || chase*2+bit > n*2+1) return 1; - if(!r[chase*2+bit]) - r[chase*2+bit]=top; - chase=r[chase*2+bit]; - if (chase < 0 || chase >= n) return 1; - } - { - int bit=(entry>>(length-j-1))&1; - if(chase>=top){ - top++; - r[chase*2+1]=0; - } - r[chase*2+bit]= decpack(i,count++,quantvals,b,opb,maptype) | - 0x80000000; - } + /* chase the tree as far as it's already populated, fill in past */ + for(j=0;j<length-1;j++){ + int bit=(entry>>(length-j-1))&1; + if(chase>=top){ + if (chase < 0 || chase >= n) return 1; + top++; + r[chase*2]=top; + r[chase*2+1]=0; + }else + if (chase < 0 || chase >= n || chase*2+bit > n*2+1) return 1; + if(!r[chase*2+bit]) + r[chase*2+bit]=top; + chase=r[chase*2+bit]; + if (chase < 0 || chase >= n) return 1; + } + { + int bit=(entry>>(length-j-1))&1; + if(chase>=top){ + top++; + r[chase*2+1]=0; + } + r[chase*2+bit]= decpack(i,count++,quantvals,b,opb,maptype) | + 0x80000000; + } - /* Look to see if the next shorter marker points to the node - above. if so, update it and repeat. */ - for(j=length;j>0;j--){ - if(marker[j]&1){ - marker[j]=marker[j-1]<<1; - break; - } - marker[j]++; - } + /* Look to see if the next shorter marker points to the node + above. if so, update it and repeat. */ + for(j=length;j>0;j--){ + if(marker[j]&1){ + marker[j]=marker[j-1]<<1; + break; + } + marker[j]++; + } - /* prune the tree; the implicit invariant says all the longer - markers were dangling from our just-taken node. Dangle them - from our *new* node. */ - for(j=length+1;j<MARKER_SIZE;j++) - if((marker[j]>>1) == entry){ - entry=marker[j]; - marker[j]=marker[j-1]<<1; - }else - break; + /* prune the tree; the implicit invariant says all the longer + markers were dangling from our just-taken node. Dangle them + from our *new* node. */ + for(j=length+1;j<MARKER_SIZE;j++) + if((marker[j]>>1) == entry){ + entry=marker[j]; + marker[j]=marker[j-1]<<1; + }else + break;
/media/esteban/ACOS/dotOS/external/tremolo/Tremolo/codebook.c
157
158
159
160
161
162
163
164
165
166
}else{ memset(marker,0,sizeof(marker)); for(i=0;i<n;i++){ long length=l[i]; if(length){ if (length < 0 || length >= MARKER_SIZE) { ALOGE("b/23881715"); return 1; }
+ show +
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
ogg_uint32_t entry=marker[length]; long chase=0; if(count && !entry)return -1; /* overpopulated tree! */ /* chase the tree as far as it's already populated, fill in past */ for(j=0;j<length-1;j++){ int bit=(entry>>(length-j-1))&1; if(chase>=top){ if (chase < 0 || chase >= n) return 1; top++; r[chase*2]=top; r[chase*2+1]=0; }else if (chase < 0 || chase >= n || chase*2+bit > n*2+1) return 1; if(!r[chase*2+bit]) r[chase*2+bit]=top; chase=r[chase*2+bit]; if (chase < 0 || chase >= n) return 1; } { int bit=(entry>>(length-j-1))&1; if(chase>=top){ top++; r[chase*2+1]=0; } r[chase*2+bit]= decpack(i,count++,quantvals,b,opb,maptype) | 0x80000000; } /* Look to see if the next shorter marker points to the node above. if so, update it and repeat. */ for(j=length;j>0;j--){ if(marker[j]&1){ marker[j]=marker[j-1]<<1; break; } marker[j]++; } /* prune the tree; the implicit invariant says all the longer markers were dangling from our just-taken node. Dangle them from our *new* node. */ for(j=length+1;j<MARKER_SIZE;j++) if((marker[j]>>1) == entry){ entry=marker[j]; marker[j]=marker[j-1]<<1; }else break;
+ show +
215
216
217
218
219
220
221
222
223
224
} } } // following sanity check copied from libvorbis /* sanity check the huffman tree; an underpopulated tree must be rejected. The only exception is the one-node pseudo-nil tree, which appears to be underpopulated because the tree doesn't really exist; there's only one possible 'codeword' or zero bits, but the above tree-gen code doesn't mark that. */

[CVE-2017-0814_1.diff] codebook.c #15
- int bit=(lok>>i)&1; - int next=t[chase+bit]; - if(next&0x80){ - chase= (next<<8) | t[chase+bit+1+(!bit || t[chase]&0x80)]; - break; - } - chase=next; + int bit=(lok>>i)&1; + int next=t[chase+bit]; + if(next&0x80){ + chase= (next<<8) | t[chase+bit+1+(!bit || t[chase]&0x80)]; + break; + } + chase=next;
/media/esteban/ACOS/dotOS/external/tremolo/Tremolo/codebook.c
682
683
684
685
686
687
688
689
690
691
} chase&=0x7fUL; break; } case 1: { /* book->dec_nodeb==1, book->dec_leafw!=1 */ /* 8/16 - Used by infile2 */ unsigned char *t=(unsigned char *)book->dec_table; for(i=0;i<read;i++){
+ show +
692
693
694
695
696
697
698
int bit=(lok>>i)&1; int next=t[chase+bit]; if(next&0x80){ chase= (next<<8) | t[chase+bit+1+(!bit || t[chase]&0x80)]; break; } chase=next;
+ show +
699
700
701
702
703
704
705
706
707
708
} //chase&=0x7fffUL; chase&=~0x8000UL; break; } case 2: { /* book->dec_nodeb==2, book->dec_leafw==1 */ /* 16/16 - Used */ for(i=0;i<read;i++){

[CVE-2017-0814_1.diff] codebook.c #17
- int bit=(lok>>i)&1; - int next=t[chase+bit]; - if(next&0x8000){ - chase= (next<<16) | t[chase+bit+1+(!bit || t[chase]&0x8000)]; - break; - } - chase=next; + int bit=(lok>>i)&1; + int next=t[chase+bit]; + if(next&0x8000){ + chase= (next<<16) | t[chase+bit+1+(!bit || t[chase]&0x8000)]; + break; + } + chase=next;
/media/esteban/ACOS/dotOS/external/tremolo/Tremolo/codebook.c
712
713
714
715
716
717
718
719
720
721
//chase&=0x7fffUL; chase&=~0x8000UL; break; } case 3: { /* book->dec_nodeb==2, book->dec_leafw!=1 */ /* 16/32 - Used by infile2 */ ogg_uint16_t *t=(ogg_uint16_t *)book->dec_table; for(i=0;i<read;i++){
+ show +
722
723
724
725
726
727
728
int bit=(lok>>i)&1; int next=t[chase+bit]; if(next&0x8000){ chase= (next<<16) | t[chase+bit+1+(!bit || t[chase]&0x8000)]; break; } chase=next;
+ show +
729
730
731
732
733
734
735
736
737
738
} //chase&=0x7fffffffUL; chase&=~0x80000000UL; break; } case 4: { //Output("32/32"); for(i=0;i<read;i++){ chase=((ogg_uint32_t *)(book->dec_table))[chase*2+((lok>>i)&1)];

[CVE-2022-40303_1.diff] parser.c #14
+ int maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_TEXT_LENGTH : + XML_MAX_NAME_LENGTH; - if ((len > XML_MAX_NAME_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); - xmlFree(buffer); - return(NULL); - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); return(NULL); } memcpy(buffer, buf, len); while (xmlIsNameChar(ctxt, c)) { if (len + 10 > max) { xmlChar *tmp;
+ show +
3610
3611
3612
3613
3614
if ((len > XML_MAX_NAME_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); xmlFree(buffer); return(NULL);
+ show +
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
} max *= 2; tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); if (tmp == NULL) { xmlErrMemory(ctxt, NULL); xmlFree(buffer); return(NULL); } buffer = tmp;

[CVE-2022-40303_1.diff] parser.c #17
+ int maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_TEXT_LENGTH : + XML_MAX_NAME_LENGTH; - if ((max > XML_MAX_NAME_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken"); - xmlFree(buffer); - return(NULL); - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
count = 0; GROW; if (ctxt->instate == XML_PARSER_EOF) { xmlFree(buffer); return(NULL); } } if (len + 10 > max) { xmlChar *tmp;
+ show +
3714
3715
3716
3717
3718
if ((max > XML_MAX_NAME_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken"); xmlFree(buffer); return(NULL);
+ show +
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
} max *= 2; tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); if (tmp == NULL) { xmlErrMemory(ctxt, NULL); xmlFree(buffer); return(NULL); } buffer = tmp;

[CVE-2022-40303_1.diff] parser.c #23
+ int maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_HUGE_LENGTH : + XML_MAX_TEXT_LENGTH; + + if (len > maxLength) { + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_NOT_FINISHED, + "entity value too long\n"); + goto error; + } + size_t maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_HUGE_LENGTH : + XML_MAX_TEXT_LENGTH; - /* - * Impose a reasonable limit on attribute size, unless XML_PARSE_HUGE - * special option is given - */ - if ((len > XML_MAX_TEXT_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, - "AttValue length too long\n"); - goto mem_error; - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
* OK loop until we reach one of the ending char or a size limit. */ c = CUR_CHAR(l); while (((NXT(0) != limit) && /* checked */ (IS_CHAR(c)) && (c != '<')) && (ctxt->instate != XML_PARSER_EOF)) { /* * Impose a reasonable limit on attribute size, unless XML_PARSE_HUGE * special option is given */
+ show +
3948
3949
3950
3951
3952
if ((len > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, "AttValue length too long\n"); goto mem_error;
+ show +
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
} if (c == '&') { in_space = 0; if (NXT(1) == '#') { int val = xmlParseCharRef(ctxt); if (val == '&') { if (ctxt->replaceEntities) { if (len + 10 > buf_size) { growBuffer(buf, 10);

[CVE-2022-40303_1.diff] parser.c #25
+ if (len > maxLength) { + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue length too long\n"); + goto mem_error; + } - /* - * There we potentially risk an overflow, don't allow attribute value of - * length more than INT_MAX it is a very reasonable assumption ! - */ - if (len >= INT_MAX) { - xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, - "AttValue length too long\n"); - goto mem_error; - } -
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, "AttValue: ' expected\n"); } } else NEXT; /* * There we potentially risk an overflow, don't allow attribute value of * length more than INT_MAX it is a very reasonable assumption ! */
+ show +
4126
4127
4128
4129
if (len >= INT_MAX) { xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, "AttValue length too long\n"); goto mem_error;
+ show +
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
} if (attlen != NULL) *attlen = (int) len; return(buf); mem_error: xmlErrMemory(ctxt, NULL); error: if (buf != NULL) xmlFree(buf);

[CVE-2022-40303_1.diff] parser.c #27
+ int maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_TEXT_LENGTH : + XML_MAX_NAME_LENGTH; - if ((size > XML_MAX_NAME_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "SystemLiteral"); - xmlFree(buf); - ctxt->instate = (xmlParserInputState) state; - return(NULL); - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
if (buf == NULL) { xmlErrMemory(ctxt, NULL); return(NULL); } ctxt->instate = XML_PARSER_SYSTEM_LITERAL; cur = CUR_CHAR(l); while ((IS_CHAR(cur)) && (cur != stop)) { /* checked */ if (len + 5 >= size) { xmlChar *tmp;
+ show +
4229
4230
4231
4232
4233
4234
if ((size > XML_MAX_NAME_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "SystemLiteral"); xmlFree(buf); ctxt->instate = (xmlParserInputState) state; return(NULL);
+ show +
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
} size *= 2; tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); if (tmp == NULL) { xmlFree(buf); xmlErrMemory(ctxt, NULL); ctxt->instate = (xmlParserInputState) state; return(NULL); } buf = tmp;

[CVE-2022-40303_1.diff] parser.c #30
+ if (len > maxLength) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "SystemLiteral"); + xmlFree(buf); + ctxt->instate = (xmlParserInputState) state; + return(NULL); + } + int maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_TEXT_LENGTH : + XML_MAX_NAME_LENGTH; - if ((size > XML_MAX_NAME_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Public ID"); - xmlFree(buf); - return(NULL); - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
if (buf == NULL) { xmlErrMemory(ctxt, NULL); return(NULL); } ctxt->instate = XML_PARSER_PUBLIC_LITERAL; cur = CUR; while ((IS_PUBIDCHAR_CH(cur)) && (cur != stop)) { /* checked */ if (len + 1 >= size) { xmlChar *tmp;
+ show +
4318
4319
4320
4321
4322
if ((size > XML_MAX_NAME_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Public ID"); xmlFree(buf); return(NULL);
+ show +
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
} size *= 2; tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); if (tmp == NULL) { xmlErrMemory(ctxt, NULL); xmlFree(buf); return(NULL); } buf = tmp; }

[CVE-2022-40303_1.diff] parser.c #33
+ if (len > maxLength) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Public ID"); + xmlFree(buf); + return(NULL); + } + size_t maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_HUGE_LENGTH : + XML_MAX_TEXT_LENGTH; - if ((len > XML_MAX_TEXT_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, - "Comment too big found", NULL); - xmlFree (buf); - return; - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
NEXTL(rl); cur = CUR_CHAR(l); if (cur == 0) goto not_terminated; while (IS_CHAR(cur) && /* checked */ ((cur != '>') || (r != '-') || (q != '-'))) { if ((r == '-') && (q == '-')) { xmlFatalErr(ctxt, XML_ERR_HYPHEN_IN_COMMENT, NULL); }
+ show +
4794
4795
4796
4797
4798
4799
if ((len > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, "Comment too big found", NULL); xmlFree (buf); return;
+ show +
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
} if (len + 5 >= size) { xmlChar *new_buf; size_t new_size; new_size = size * 2; new_buf = (xmlChar *) xmlRealloc(buf, new_size); if (new_buf == NULL) { xmlFree (buf); xmlErrMemory(ctxt, NULL);
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
ctxt->instate = state; return; } buf = new_buf; } memcpy(&buf[len], ctxt->input->cur, nbchar); len += nbchar; buf[len] = 0; } }
+ show +
4965
4966
4967
4968
4969
4970
if ((len > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, "Comment too big found", NULL); xmlFree (buf); return;
+ show +
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
} ctxt->input->cur = in; if (*in == 0xA) { in++; ctxt->input->line++; ctxt->input->col = 1; } if (*in == 0xD) { in++; if (*in == 0xA) { ctxt->input->cur = in;

[CVE-2022-40303_1.diff] parser.c #38
+ size_t maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_HUGE_LENGTH : + XML_MAX_TEXT_LENGTH; - if ((len > XML_MAX_TEXT_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, - "PI %s too big found", target); - xmlFree(buf); - ctxt->instate = state; - return; - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
} count++; if (count > 50) { SHRINK; GROW; if (ctxt->instate == XML_PARSER_EOF) { xmlFree(buf); return; } count = 0;
+ show +
5241
5242
5243
5244
5245
5246
5247
if ((len > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, "PI %s too big found", target); xmlFree(buf); ctxt->instate = state; return;
+ show +
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
} } COPY_BUF(l,buf,len,cur); NEXTL(l); cur = CUR_CHAR(l); if (cur == 0) { SHRINK; GROW; cur = CUR_CHAR(l); }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
} COPY_BUF(l,buf,len,cur); NEXTL(l); cur = CUR_CHAR(l); if (cur == 0) { SHRINK; GROW; cur = CUR_CHAR(l); } }
+ show +
5259
5260
5261
5262
5263
5264
5265
if ((len > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, "PI %s too big found", target); xmlFree(buf); ctxt->instate = state; return;
+ show +
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
} buf[len] = 0; if (cur != '?') { xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, "ParsePI: PI %s never end ...\n", target); } else { if (inputid != ctxt->input->id) { xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, "PI declaration doesn't start and stop in" " the same entity\n");

[CVE-2022-40303_1.diff] parser.c #39
+ if (len > maxLength) { + xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, + "PI %s too big found", target); + xmlFree(buf); + ctxt->instate = state; + return; + } - if ((len > XML_MAX_TEXT_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, - "PI %s too big found", target); - xmlFree(buf); - ctxt->instate = state; - return; - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
} count++; if (count > 50) { SHRINK; GROW; if (ctxt->instate == XML_PARSER_EOF) { xmlFree(buf); return; } count = 0;
+ show +
5241
5242
5243
5244
5245
5246
5247
if ((len > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, "PI %s too big found", target); xmlFree(buf); ctxt->instate = state; return;
+ show +
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
} } COPY_BUF(l,buf,len,cur); NEXTL(l); cur = CUR_CHAR(l); if (cur == 0) { SHRINK; GROW; cur = CUR_CHAR(l); }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
} COPY_BUF(l,buf,len,cur); NEXTL(l); cur = CUR_CHAR(l); if (cur == 0) { SHRINK; GROW; cur = CUR_CHAR(l); } }
+ show +
5259
5260
5261
5262
5263
5264
5265
if ((len > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, "PI %s too big found", target); xmlFree(buf); ctxt->instate = state; return;
+ show +
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
} buf[len] = 0; if (cur != '?') { xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED, "ParsePI: PI %s never end ...\n", target); } else { if (inputid != ctxt->input->id) { xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, "PI declaration doesn't start and stop in" " the same entity\n");

[CVE-2022-40303_1.diff] parser.c #47
+ int maxLength = (ctxt->options & XML_PARSE_HUGE) ? + XML_MAX_HUGE_LENGTH : + XML_MAX_TEXT_LENGTH; - if ((size > XML_MAX_TEXT_LENGTH) && - ((ctxt->options & XML_PARSE_HUGE) == 0)) { - xmlFatalErrMsgStr(ctxt, XML_ERR_CDATA_NOT_FINISHED, - "CData section too big found", NULL); - xmlFree (buf); - return; - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar)); if (buf == NULL) { xmlErrMemory(ctxt, NULL); return; } while (IS_CHAR(cur) && ((r != ']') || (s != ']') || (cur != '>'))) { if (len + 5 >= size) { xmlChar *tmp;
+ show +
9800
9801
9802
9803
9804
9805
if ((size > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgStr(ctxt, XML_ERR_CDATA_NOT_FINISHED, "CData section too big found", NULL); xmlFree (buf); return;
+ show +
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
} tmp = (xmlChar *) xmlRealloc(buf, size * 2 * sizeof(xmlChar)); if (tmp == NULL) { xmlFree(buf); xmlErrMemory(ctxt, NULL); return; } buf = tmp; size *= 2; }

[CVE-2018-9472_1.diff] parser.c #26
- if (c == 0) { - count = 0; - GROW; - if (ctxt->instate == XML_PARSER_EOF) - return(NULL); - c = CUR_CHAR(l); - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
c = CUR_CHAR(l); while (xmlIsNameChar(ctxt, c)) { if (count++ > XML_PARSER_CHUNK_SIZE) { count = 0; GROW; } COPY_BUF(l,buf,len,c); NEXTL(l); c = CUR_CHAR(l);
+ show +
3681
3682
3683
3684
3685
3686
if (c == 0) { count = 0; GROW; if (ctxt->instate == XML_PARSER_EOF) return(NULL); c = CUR_CHAR(l);
+ show +
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
} if (len >= XML_MAX_NAMELEN) { /* * Okay someone managed to make a huge token, so he's ready to pay * for the processing speed. */ xmlChar *buffer; int max = len * 2; buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar));

[CVE-2018-9472_1.diff] parser.c #79
- xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, - "PEReference: %%%s; not found\n", - name, NULL); - ctxt->valid = 0; + if ((ctxt->validate) && (ctxt->vctxt.error != NULL)) { + xmlValidityError(ctxt, XML_WAR_UNDECLARED_ENTITY, + "PEReference: %%%s; not found\n", + name, NULL); + } else + xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, + "PEReference: %%%s; not found\n", + name, NULL); + ctxt->valid = 0;
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
* In a document with an external subset or external * parameter entities with "standalone='no'", ... * ... The declaration of a parameter entity must * precede any reference to it... */ if ((ctxt->validate) && (ctxt->vctxt.error != NULL)) { xmlValidityError(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); } else
+ show +
7970
7971
7972
7973
xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); ctxt->valid = 0;
+ show +
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
} xmlParserEntityCheck(ctxt, 0, NULL, 0); } else { /* * Internal checking in case the entity quest barfed */ if ((entity->etype != XML_INTERNAL_PARAMETER_ENTITY) && (entity->etype != XML_EXTERNAL_PARAMETER_ENTITY)) { xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "Internal: %%%s; is not a parameter entity\n",
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
xmlFatalErrMsgStr(ctxt, XML_ERR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name); } else { /* * [ VC: Entity Declared ] * In a document with an external subset or external * parameter entities with "standalone='no'", ... * ... The declaration of a parameter entity must * precede any reference to it... */
+ show +
8235
8236
8237
8238
xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); ctxt->valid = 0;
+ show +
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
} xmlParserEntityCheck(ctxt, 0, NULL, 0); } else { /* * Internal checking in case the entity quest barfed */ if ((entity->etype != XML_INTERNAL_PARAMETER_ENTITY) && (entity->etype != XML_EXTERNAL_PARAMETER_ENTITY)) { xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "%%%s; is not a parameter entity\n",

[CVE-2018-9466_1.diff] parser.c #26
- if (c == 0) { - count = 0; - GROW; - if (ctxt->instate == XML_PARSER_EOF) - return(NULL); - c = CUR_CHAR(l); - }
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
c = CUR_CHAR(l); while (xmlIsNameChar(ctxt, c)) { if (count++ > XML_PARSER_CHUNK_SIZE) { count = 0; GROW; } COPY_BUF(l,buf,len,c); NEXTL(l); c = CUR_CHAR(l);
+ show +
3681
3682
3683
3684
3685
3686
if (c == 0) { count = 0; GROW; if (ctxt->instate == XML_PARSER_EOF) return(NULL); c = CUR_CHAR(l);
+ show +
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
} if (len >= XML_MAX_NAMELEN) { /* * Okay someone managed to make a huge token, so he's ready to pay * for the processing speed. */ xmlChar *buffer; int max = len * 2; buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar));

[CVE-2018-9466_1.diff] parser.c #79
- xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, - "PEReference: %%%s; not found\n", - name, NULL); - ctxt->valid = 0; + if ((ctxt->validate) && (ctxt->vctxt.error != NULL)) { + xmlValidityError(ctxt, XML_WAR_UNDECLARED_ENTITY, + "PEReference: %%%s; not found\n", + name, NULL); + } else + xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, + "PEReference: %%%s; not found\n", + name, NULL); + ctxt->valid = 0;
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
* In a document with an external subset or external * parameter entities with "standalone='no'", ... * ... The declaration of a parameter entity must * precede any reference to it... */ if ((ctxt->validate) && (ctxt->vctxt.error != NULL)) { xmlValidityError(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); } else
+ show +
7970
7971
7972
7973
xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); ctxt->valid = 0;
+ show +
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
} xmlParserEntityCheck(ctxt, 0, NULL, 0); } else { /* * Internal checking in case the entity quest barfed */ if ((entity->etype != XML_INTERNAL_PARAMETER_ENTITY) && (entity->etype != XML_EXTERNAL_PARAMETER_ENTITY)) { xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "Internal: %%%s; is not a parameter entity\n",
/media/esteban/ACOS/dotOS/external/libxml2/parser.c
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
xmlFatalErrMsgStr(ctxt, XML_ERR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name); } else { /* * [ VC: Entity Declared ] * In a document with an external subset or external * parameter entities with "standalone='no'", ... * ... The declaration of a parameter entity must * precede any reference to it... */
+ show +
8235
8236
8237
8238
xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); ctxt->valid = 0;
+ show +
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
} xmlParserEntityCheck(ctxt, 0, NULL, 0); } else { /* * Internal checking in case the entity quest barfed */ if ((entity->etype != XML_INTERNAL_PARAMETER_ENTITY) && (entity->etype != XML_EXTERNAL_PARAMETER_ENTITY)) { xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "%%%s; is not a parameter entity\n",

[CVE-2018-9472_1.diff] xpath.c #12
- fprintf(output, "Compiled Expression : %d elements\n", - comp->nbStep); - i = comp->last; - xmlXPathDebugDumpStepOp(output, comp, &comp->steps[i], depth + 1); +#ifdef XPATH_STREAMING + if (comp->stream) { + fprintf(output, "Streaming Expression\n"); + } else +#endif + { + fprintf(output, "Compiled Expression : %d elements\n", + comp->nbStep); + i = comp->last; + xmlXPathDebugDumpStepOp(output, comp, &comp->steps[i], depth + 1); + }
/media/esteban/ACOS/dotOS/external/libxml2/xpath.c
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
shift[2 * i] = shift[2 * i + 1] = 0; fprintf(output, "%s", shift); #ifdef XPATH_STREAMING if (comp->stream) { fprintf(output, "Streaming Expression\n"); } else #endif {
+ show +
1707
1708
1709
1710
fprintf(output, "Compiled Expression : %d elements\n", comp->nbStep); i = comp->last; xmlXPathDebugDumpStepOp(output, comp, &comp->steps[i], depth + 1);
+ show +
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
} } #ifdef XP_DEBUG_OBJ_USAGE /* * XPath object usage related debugging variables. */ static int xmlXPathDebugObjCounterUndefined = 0; static int xmlXPathDebugObjCounterNodeset = 0;

[CVE-2018-9466_1.diff] xpath.c #12
- fprintf(output, "Compiled Expression : %d elements\n", - comp->nbStep); - i = comp->last; - xmlXPathDebugDumpStepOp(output, comp, &comp->steps[i], depth + 1); +#ifdef XPATH_STREAMING + if (comp->stream) { + fprintf(output, "Streaming Expression\n"); + } else +#endif + { + fprintf(output, "Compiled Expression : %d elements\n", + comp->nbStep); + i = comp->last; + xmlXPathDebugDumpStepOp(output, comp, &comp->steps[i], depth + 1); + }
/media/esteban/ACOS/dotOS/external/libxml2/xpath.c
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
shift[2 * i] = shift[2 * i + 1] = 0; fprintf(output, "%s", shift); #ifdef XPATH_STREAMING if (comp->stream) { fprintf(output, "Streaming Expression\n"); } else #endif {
+ show +
1707
1708
1709
1710
fprintf(output, "Compiled Expression : %d elements\n", comp->nbStep); i = comp->last; xmlXPathDebugDumpStepOp(output, comp, &comp->steps[i], depth + 1);
+ show +
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
} } #ifdef XP_DEBUG_OBJ_USAGE /* * XPath object usage related debugging variables. */ static int xmlXPathDebugObjCounterUndefined = 0; static int xmlXPathDebugObjCounterNodeset = 0;

[CVE-2015-6607_1.diff] shell.c #106
+ }else if( strcmp(z,"-scratch")==0 ){ + int n, sz; + sz = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( sz>400000 ) sz = 400000; + if( sz<2500 ) sz = 2500; + n = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( n>10 ) n = 10; + if( n<1 ) n = 1; + sqlite3_config(SQLITE_CONFIG_SCRATCH, malloc(n*sz+1), sz, n); + data.shellFlgs |= SHFLG_Scratch; + }else if( strcmp(z,"-pagecache")==0 ){ + int n, sz; + sz = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( sz>70000 ) sz = 70000; + if( sz<800 ) sz = 800; + n = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( n<10 ) n = 10; + sqlite3_config(SQLITE_CONFIG_PAGECACHE, malloc(n*sz+1), sz, n); + data.shellFlgs |= SHFLG_Pagecache; + }else if( strcmp(z,"-lookaside")==0 ){ + int n, sz; + sz = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( sz<0 ) sz = 0; + n = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( n<0 ) n = 0; + sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, n); + if( sz*n==0 ) data.shellFlgs &= ~SHFLG_Lookaside; -#ifdef SQLITE_SHELL_DBNAME_PROC - { extern void SQLITE_SHELL_DBNAME_PROC(const char**); - SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename); - warnInmemoryDb = 0; } -#endif
/media/esteban/ACOS/dotOS/external/sqlite/dist/shell.c
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
/* Make sure we have a valid signal handler early, before anything ** else is done. */ #ifdef SIGINT signal(SIGINT, interrupt_handler); #elif (defined(_WIN32) || defined(WIN32)) && !defined(_WIN32_WCE) SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE); #endif
+ show +
19144
19145
19146
19147
19148
19149
19150
19151
19152
19153
19154
#ifdef SQLITE_SHELL_DBNAME_PROC { /* If the SQLITE_SHELL_DBNAME_PROC macro is defined, then it is the name ** of a C-function that will provide the name of the database file. Use ** this compile-time option to embed this shell program in larger ** applications. */ extern void SQLITE_SHELL_DBNAME_PROC(const char**); SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename); warnInmemoryDb = 0; } #endif
+ show +
19155
19156
19157
19158
19159
19160
19161
19162
19163
19164
/* Do an initial pass through the command-line argument to locate ** the name of the database file, the name of the initialization file, ** the size of the alternative malloc heap, ** and the first command to execute. */ verify_uninitialized(); for(i=1; i<argc; i++){ char *z; z = argv[i];
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/shell.c
19113
19114
19115
19116
19117
19118
19119
19120
19121
19122
/* Make sure we have a valid signal handler early, before anything ** else is done. */ #ifdef SIGINT signal(SIGINT, interrupt_handler); #elif (defined(_WIN32) || defined(WIN32)) && !defined(_WIN32_WCE) SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE); #endif
+ show +
19123
19124
19125
19126
19127
19128
19129
19130
19131
19132
19133
#ifdef SQLITE_SHELL_DBNAME_PROC { /* If the SQLITE_SHELL_DBNAME_PROC macro is defined, then it is the name ** of a C-function that will provide the name of the database file. Use ** this compile-time option to embed this shell program in larger ** applications. */ extern void SQLITE_SHELL_DBNAME_PROC(const char**); SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename); warnInmemoryDb = 0; } #endif
+ show +
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
/* Do an initial pass through the command-line argument to locate ** the name of the database file, the name of the initialization file, ** the size of the alternative malloc heap, ** and the first command to execute. */ verify_uninitialized(); for(i=1; i<argc; i++){ char *z; z = argv[i];

[CVE-2015-6607_1.diff] shell.c #106
+ }else if( strcmp(z,"-scratch")==0 ){ + int n, sz; + sz = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( sz>400000 ) sz = 400000; + if( sz<2500 ) sz = 2500; + n = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( n>10 ) n = 10; + if( n<1 ) n = 1; + sqlite3_config(SQLITE_CONFIG_SCRATCH, malloc(n*sz+1), sz, n); + data.shellFlgs |= SHFLG_Scratch; + }else if( strcmp(z,"-pagecache")==0 ){ + int n, sz; + sz = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( sz>70000 ) sz = 70000; + if( sz<800 ) sz = 800; + n = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( n<10 ) n = 10; + sqlite3_config(SQLITE_CONFIG_PAGECACHE, malloc(n*sz+1), sz, n); + data.shellFlgs |= SHFLG_Pagecache; + }else if( strcmp(z,"-lookaside")==0 ){ + int n, sz; + sz = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( sz<0 ) sz = 0; + n = (int)integerValue(cmdline_option_value(argc,argv,++i)); + if( n<0 ) n = 0; + sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, n); + if( sz*n==0 ) data.shellFlgs &= ~SHFLG_Lookaside; -#ifdef SQLITE_SHELL_DBNAME_PROC - { extern void SQLITE_SHELL_DBNAME_PROC(const char**); - SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename); - warnInmemoryDb = 0; } -#endif
/media/esteban/ACOS/dotOS/external/sqlite/dist/shell.c
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
/* Make sure we have a valid signal handler early, before anything ** else is done. */ #ifdef SIGINT signal(SIGINT, interrupt_handler); #elif (defined(_WIN32) || defined(WIN32)) && !defined(_WIN32_WCE) SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE); #endif
+ show +
19144
19145
19146
19147
19148
19149
19150
19151
19152
19153
19154
#ifdef SQLITE_SHELL_DBNAME_PROC { /* If the SQLITE_SHELL_DBNAME_PROC macro is defined, then it is the name ** of a C-function that will provide the name of the database file. Use ** this compile-time option to embed this shell program in larger ** applications. */ extern void SQLITE_SHELL_DBNAME_PROC(const char**); SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename); warnInmemoryDb = 0; } #endif
+ show +
19155
19156
19157
19158
19159
19160
19161
19162
19163
19164
/* Do an initial pass through the command-line argument to locate ** the name of the database file, the name of the initialization file, ** the size of the alternative malloc heap, ** and the first command to execute. */ verify_uninitialized(); for(i=1; i<argc; i++){ char *z; z = argv[i];
/media/esteban/ACOS/dotOS/external/sqlite/dist/orig/shell.c
19113
19114
19115
19116
19117
19118
19119
19120
19121
19122
/* Make sure we have a valid signal handler early, before anything ** else is done. */ #ifdef SIGINT signal(SIGINT, interrupt_handler); #elif (defined(_WIN32) || defined(WIN32)) && !defined(_WIN32_WCE) SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE); #endif
+ show +
19123
19124
19125
19126
19127
19128
19129
19130
19131
19132
19133
#ifdef SQLITE_SHELL_DBNAME_PROC { /* If the SQLITE_SHELL_DBNAME_PROC macro is defined, then it is the name ** of a C-function that will provide the name of the database file. Use ** this compile-time option to embed this shell program in larger ** applications. */ extern void SQLITE_SHELL_DBNAME_PROC(const char**); SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename); warnInmemoryDb = 0; } #endif
+ show +
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
/* Do an initial pass through the command-line argument to locate ** the name of the database file, the name of the initialization file, ** the size of the alternative malloc heap, ** and the first command to execute. */ verify_uninitialized(); for(i=1; i<argc; i++){ char *z; z = argv[i];

[CVE-2014-9675_1.diff] aflatin.c #17
+ /* Extract standard_width from writing system/script specific */ + /* metrics class. */ + + FT_LOCAL_DEF( void ) + af_latin_get_standard_widths( AF_LatinMetrics metrics, + FT_Pos* stdHW, + FT_Pos* stdVW ) + { + if ( stdHW ) + *stdHW = metrics->axis[AF_DIMENSION_VERT].standard_width; + + if ( stdVW ) + *stdVW = metrics->axis[AF_DIMENSION_HORZ].standard_width; + } + + - AF_AxisHints axis = &hints->axis[dim]; - FT_Memory memory = hints->memory; - FT_Error error = FT_Err_Ok; - AF_Segment segment = NULL; - AF_SegmentRec seg0; - AF_Point* contour = hints->contours; - AF_Point* contour_limit = contour + hints->num_contours; - AF_Direction major_dir, segment_dir; + AF_LatinMetrics metrics = (AF_LatinMetrics)hints->metrics; + AF_AxisHints axis = &hints->axis[dim]; + FT_Memory memory = hints->memory; + FT_Error error = FT_Err_Ok; + AF_Segment segment = NULL; + AF_SegmentRec seg0; + AF_Point* contour = hints->contours; + AF_Point* contour_limit = contour + hints->num_contours; + AF_Direction major_dir, segment_dir; + + FT_Pos flat_threshold = FLAT_THRESHOLD( metrics->units_per_em );
/media/esteban/ACOS/dotOS/external/freetype/src/autofit/aflatin.c
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
/*************************************************************************/ /* Walk over all contours and compute its segments. */ FT_LOCAL_DEF( FT_Error ) af_latin_hints_compute_segments( AF_GlyphHints hints, AF_Dimension dim ) { AF_LatinMetrics metrics = (AF_LatinMetrics)hints->metrics;
+ show +
1541
1542
1543
1544
1545
1546
1547
1548
AF_AxisHints axis = &hints->axis[dim]; FT_Memory memory = hints->memory; FT_Error error = FT_Err_Ok; AF_Segment segment = NULL; AF_SegmentRec seg0; AF_Point* contour = hints->contours; AF_Point* contour_limit = contour + hints->num_contours; AF_Direction major_dir, segment_dir;
+ show +
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
FT_Pos flat_threshold = FLAT_THRESHOLD( metrics->units_per_em ); FT_ZERO( &seg0 ); seg0.score = 32000; seg0.flags = AF_EDGE_NORMAL; major_dir = (AF_Direction)FT_ABS( axis->major_dir ); segment_dir = major_dir;
/media/esteban/ACOS/dotOS/external/freetype/src/autofit/aflatin2.c
725
726
727
728
729
730
731
732
733
734
/***** *****/ /*************************************************************************/ /*************************************************************************/ #define SORT_SEGMENTS FT_LOCAL_DEF( FT_Error ) af_latin2_hints_compute_segments( AF_GlyphHints hints, AF_Dimension dim ) {
+ show +
735
736
737
738
739
740
741
742
AF_AxisHints axis = &hints->axis[dim]; FT_Memory memory = hints->memory; FT_Error error = FT_Err_Ok; AF_Segment segment = NULL; AF_SegmentRec seg0; AF_Point* contour = hints->contours; AF_Point* contour_limit = contour + hints->num_contours; AF_Direction major_dir, segment_dir;
+ show +
743
744
745
746
747
748
749
750
751
752
FT_ZERO( &seg0 ); seg0.score = 32000; seg0.flags = AF_EDGE_NORMAL; major_dir = (AF_Direction)FT_ABS( axis->major_dir ); segment_dir = major_dir; axis->num_segments = 0;

[CVE-2014-9675_1.diff] aflatin.c #18
- AF_Point point = contour[0]; - AF_Point last = point->prev; - int on_edge = 0; - FT_Pos min_pos = 32000; /* minimum segment pos != min_coord */ - FT_Pos max_pos = -32000; /* maximum segment pos != max_coord */ + AF_Point point = contour[0]; + AF_Point last = point->prev; + int on_edge = 0; + FT_Pos min_pos = 32000; /* minimum segment pos != min_coord */ + FT_Pos max_pos = -32000; /* maximum segment pos != max_coord */ + FT_Pos min_on_pos = 32000; + FT_Pos max_on_pos = -32000;
/media/esteban/ACOS/dotOS/external/freetype/src/autofit/aflatin.c
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
for ( ; point < limit; point++ ) { point->u = point->fy; point->v = point->fx; } } /* do each contour separately */ for ( ; contour < contour_limit; contour++ ) {
+ show +
1591
1592
1593
1594
1595
1596
1597
1598
1599
AF_Point point = contour[0]; AF_Point last = point->prev; int on_edge = 0; /* we call values measured along a segment (point->v) */ /* `coordinates', and values orthogonal to it (point->u) */ /* `positions' */ FT_Pos min_pos = 32000; FT_Pos max_pos = -32000;
+ show +
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
FT_Pos min_coord = 32000; FT_Pos max_coord = -32000; FT_UShort min_flags = AF_FLAG_NONE; FT_UShort max_flags = AF_FLAG_NONE; FT_Pos min_on_coord = 32000; FT_Pos max_on_coord = -32000; FT_Bool passed; AF_Segment prev_segment = NULL;

[CVE-2020-0478_1.diff] CMakeLists.txt #12
+ + if(CONFIG_TUNE_VMAF) + find_library(VMAF libvmaf.a vmaf) + if(NOT VMAF) + message(FATAL_ERROR "VMAF library not found.") + endif() + message("-- Found VMAF library: " ${VMAF}) + set_target_properties(aom PROPERTIES LINKER_LANGUAGE CXX) + if(BUILD_SHARED_LIBS) + set_target_properties(aom_static PROPERTIES LINKER_LANGUAGE CXX) + endif() + target_link_libraries(aom PRIVATE ${VMAF}) + endif() - "${AOM_ROOT}/tools/dump_obu.cc" - "${AOM_ROOT}/tools/obu_parser.cc" - "${AOM_ROOT}/tools/obu_parser.h" - $<TARGET_OBJECTS:aom_common_app_util> - $<TARGET_OBJECTS:aom_decoder_app_util>) + "${AOM_ROOT}/tools/dump_obu.cc" + "${AOM_ROOT}/tools/obu_parser.cc" + "${AOM_ROOT}/tools/obu_parser.h" + $<TARGET_OBJECTS:aom_common_app_util> + $<TARGET_OBJECTS:aom_decoder_app_util>)
/media/esteban/ACOS/dotOS/external/libaom/libaom/CMakeLists.txt
451
452
453
454
455
456
457
458
459
460
# Maintain a separate variable listing only the examples to facilitate # installation of example programs into an examples sub directory of # $AOM_DIST_DIR/bin when building the dist target. list(APPEND AOM_EXAMPLE_TARGETS ${AOM_DECODER_EXAMPLE_TARGETS} ${AOM_ENCODER_EXAMPLE_TARGETS}) endif() if(ENABLE_TOOLS) if(CONFIG_AV1_DECODER) add_executable(dump_obu "${AOM_GEN_SRC_DIR}/usage_exit.cc"
+ show +
461
462
463
464
465
"${AOM_ROOT}/tools/dump_obu.cc" "${AOM_ROOT}/tools/obu_parser.cc" "${AOM_ROOT}/tools/obu_parser.h" $<TARGET_OBJECTS:aom_common_app_util> $<TARGET_OBJECTS:aom_decoder_app_util>)
+ show +
466
467
468
469
470
471
472
473
474
475
list(APPEND AOM_TOOL_TARGETS dump_obu) list(APPEND AOM_APP_TARGETS dump_obu) # Maintain a separate variable listing only the examples to facilitate # installation of example programs into an tools sub directory of # $AOM_DIST_DIR/bin when building the dist target. list(APPEND AOM_TOOL_TARGETS ${AOM_DECODER_TOOL_TARGETS} ${AOM_ENCODER_TOOL_TARGETS}) endif()

[CVE-2020-0470_1.diff] CMakeLists.txt #12
+ + if(CONFIG_TUNE_VMAF) + find_library(VMAF libvmaf.a vmaf) + if(NOT VMAF) + message(FATAL_ERROR "VMAF library not found.") + endif() + message("-- Found VMAF library: " ${VMAF}) + set_target_properties(aom PROPERTIES LINKER_LANGUAGE CXX) + if(BUILD_SHARED_LIBS) + set_target_properties(aom_static PROPERTIES LINKER_LANGUAGE CXX) + endif() + target_link_libraries(aom PRIVATE ${VMAF}) + endif() - "${AOM_ROOT}/tools/dump_obu.cc" - "${AOM_ROOT}/tools/obu_parser.cc" - "${AOM_ROOT}/tools/obu_parser.h" - $<TARGET_OBJECTS:aom_common_app_util> - $<TARGET_OBJECTS:aom_decoder_app_util>) + "${AOM_ROOT}/tools/dump_obu.cc" + "${AOM_ROOT}/tools/obu_parser.cc" + "${AOM_ROOT}/tools/obu_parser.h" + $<TARGET_OBJECTS:aom_common_app_util> + $<TARGET_OBJECTS:aom_decoder_app_util>)
/media/esteban/ACOS/dotOS/external/libaom/libaom/CMakeLists.txt
451
452
453
454
455
456
457
458
459
460
# Maintain a separate variable listing only the examples to facilitate # installation of example programs into an examples sub directory of # $AOM_DIST_DIR/bin when building the dist target. list(APPEND AOM_EXAMPLE_TARGETS ${AOM_DECODER_EXAMPLE_TARGETS} ${AOM_ENCODER_EXAMPLE_TARGETS}) endif() if(ENABLE_TOOLS) if(CONFIG_AV1_DECODER) add_executable(dump_obu "${AOM_GEN_SRC_DIR}/usage_exit.cc"
+ show +
461
462
463
464
465
"${AOM_ROOT}/tools/dump_obu.cc" "${AOM_ROOT}/tools/obu_parser.cc" "${AOM_ROOT}/tools/obu_parser.h" $<TARGET_OBJECTS:aom_common_app_util> $<TARGET_OBJECTS:aom_decoder_app_util>)
+ show +
466
467
468
469
470
471
472
473
474
475
list(APPEND AOM_TOOL_TARGETS dump_obu) list(APPEND AOM_APP_TARGETS dump_obu) # Maintain a separate variable listing only the examples to facilitate # installation of example programs into an tools sub directory of # $AOM_DIST_DIR/bin when building the dist target. list(APPEND AOM_TOOL_TARGETS ${AOM_DECODER_TOOL_TARGETS} ${AOM_ENCODER_TOOL_TARGETS}) endif()

[CVE-2020-0478_1.diff] sad.c #1
+#endif // CONFIG_AV1_HIGHBITDEPTH -#define sadMxNx4D(m, n) \ - void aom_sad##m##x##n##x4d_c(const uint8_t *src, int src_stride, \ - const uint8_t *const ref_array[], \ - int ref_stride, uint32_t *sad_array) { \ - int i; \ - for (i = 0; i < 4; ++i) { \ - sad_array[i] = \ - aom_sad##m##x##n##_c(src, src_stride, ref_array[i], ref_stride); \ - } \ +#define sadMxNx4D(m, n) \ + void aom_sad##m##x##n##x4d_c(const uint8_t *src, int src_stride, \ + const uint8_t *const ref_array[], \ + int ref_stride, uint32_t *sad_array) { \ + int i; \ + for (i = 0; i < 4; ++i) { \ + sad_array[i] = \ + aom_sad##m##x##n##_c(src, src_stride, ref_array[i], ref_stride); \ + } \ + } \ + void aom_sad##m##x##n##x4d_avg_c( \ + const uint8_t *src, int src_stride, const uint8_t *const ref_array[], \ + int ref_stride, const uint8_t *second_pred, uint32_t *sad_array) { \ + int i; \ + for (i = 0; i < 4; ++i) { \ + sad_array[i] = aom_sad##m##x##n##_avg_c(src, src_stride, ref_array[i], \ + ref_stride, second_pred); \ + } \
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/sad.c
57
58
59
60
61
62
63
64
65
66
unsigned int aom_dist_wtd_sad##m##x##n##_avg_c( \ const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, \ const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \ uint8_t comp_pred[m * n]; \ aom_dist_wtd_comp_avg_pred_c(comp_pred, second_pred, m, n, ref, \ ref_stride, jcp_param); \ return sad(src, src_stride, comp_pred, m, m, n); \ } // Calculate sad against 4 reference locations and store each in sad_array
+ show +
67
68
69
70
71
72
73
74
75
#define sadMxNx4D(m, n) \ void aom_sad##m##x##n##x4d_c(const uint8_t *src, int src_stride, \ const uint8_t *const ref_array[], \ int ref_stride, uint32_t *sad_array) { \ int i; \ for (i = 0; i < 4; ++i) { \ sad_array[i] = \ aom_sad##m##x##n##_c(src, src_stride, ref_array[i], ref_stride); \ } \
+ show +
76
77
78
79
80
81
82
83
84
85
} \ void aom_sad##m##x##n##x4d_avg_c( \ const uint8_t *src, int src_stride, const uint8_t *const ref_array[], \ int ref_stride, const uint8_t *second_pred, uint32_t *sad_array) { \ int i; \ for (i = 0; i < 4; ++i) { \ sad_array[i] = aom_sad##m##x##n##_avg_c(src, src_stride, ref_array[i], \ ref_stride, second_pred); \ } \ }

[CVE-2020-0470_1.diff] sad.c #1
+#endif // CONFIG_AV1_HIGHBITDEPTH -#define sadMxNx4D(m, n) \ - void aom_sad##m##x##n##x4d_c(const uint8_t *src, int src_stride, \ - const uint8_t *const ref_array[], \ - int ref_stride, uint32_t *sad_array) { \ - int i; \ - for (i = 0; i < 4; ++i) { \ - sad_array[i] = \ - aom_sad##m##x##n##_c(src, src_stride, ref_array[i], ref_stride); \ - } \ +#define sadMxNx4D(m, n) \ + void aom_sad##m##x##n##x4d_c(const uint8_t *src, int src_stride, \ + const uint8_t *const ref_array[], \ + int ref_stride, uint32_t *sad_array) { \ + int i; \ + for (i = 0; i < 4; ++i) { \ + sad_array[i] = \ + aom_sad##m##x##n##_c(src, src_stride, ref_array[i], ref_stride); \ + } \ + } \ + void aom_sad##m##x##n##x4d_avg_c( \ + const uint8_t *src, int src_stride, const uint8_t *const ref_array[], \ + int ref_stride, const uint8_t *second_pred, uint32_t *sad_array) { \ + int i; \ + for (i = 0; i < 4; ++i) { \ + sad_array[i] = aom_sad##m##x##n##_avg_c(src, src_stride, ref_array[i], \ + ref_stride, second_pred); \ + } \
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/sad.c
57
58
59
60
61
62
63
64
65
66
unsigned int aom_dist_wtd_sad##m##x##n##_avg_c( \ const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, \ const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \ uint8_t comp_pred[m * n]; \ aom_dist_wtd_comp_avg_pred_c(comp_pred, second_pred, m, n, ref, \ ref_stride, jcp_param); \ return sad(src, src_stride, comp_pred, m, m, n); \ } // Calculate sad against 4 reference locations and store each in sad_array
+ show +
67
68
69
70
71
72
73
74
75
#define sadMxNx4D(m, n) \ void aom_sad##m##x##n##x4d_c(const uint8_t *src, int src_stride, \ const uint8_t *const ref_array[], \ int ref_stride, uint32_t *sad_array) { \ int i; \ for (i = 0; i < 4; ++i) { \ sad_array[i] = \ aom_sad##m##x##n##_c(src, src_stride, ref_array[i], ref_stride); \ } \
+ show +
76
77
78
79
80
81
82
83
84
85
} \ void aom_sad##m##x##n##x4d_avg_c( \ const uint8_t *src, int src_stride, const uint8_t *const ref_array[], \ int ref_stride, const uint8_t *second_pred, uint32_t *sad_array) { \ int i; \ for (i = 0; i < 4; ++i) { \ sad_array[i] = aom_sad##m##x##n##_avg_c(src, src_stride, ref_array[i], \ ref_stride, second_pred); \ } \ }

[CVE-2020-0478_1.diff] intrapred_avx2.c #94
- a1_y = _mm_setr_epi16(left[base_y_c[0] + 1], left[base_y_c[1] + 1], - left[base_y_c[2] + 1], left[base_y_c[3] + 1], - left[base_y_c[4] + 1], left[base_y_c[5] + 1], - left[base_y_c[6] + 1], left[base_y_c[7] + 1]); + base_y_c128 = _mm_add_epi16( + base_y_c128, _mm_srli_epi16(_mm256_castsi256_si128(a16), 4)); + _mm_store_si128((__m128i *)base_y_c, base_y_c128); + + a1_y = _mm_setr_epi16(left[base_y_c[0]], left[base_y_c[1]], + left[base_y_c[2]], left[base_y_c[3]], + left[base_y_c[4]], left[base_y_c[5]], + left[base_y_c[6]], left[base_y_c[7]]);
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/x86/intrapred_avx2.c
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
y_c128 = _mm_sub_epi16(r6, _mm_mullo_epi16(c1234, dy128)); base_y_c128 = _mm_srai_epi16(y_c128, frac_bits_y); mask128 = _mm_cmpgt_epi16(min_base_y128, base_y_c128); base_y_c128 = _mm_andnot_si128(mask128, base_y_c128); _mm_store_si128((__m128i *)base_y_c, base_y_c128); a0_y = _mm_setr_epi16(left[base_y_c[0]], left[base_y_c[1]], left[base_y_c[2]], left[base_y_c[3]], left[base_y_c[4]], left[base_y_c[5]], left[base_y_c[6]], left[base_y_c[7]]);
+ show +
2471
2472
2473
2474
a1_y = _mm_setr_epi16(left[base_y_c[0] + 1], left[base_y_c[1] + 1], left[base_y_c[2] + 1], left[base_y_c[3] + 1], left[base_y_c[4] + 1], left[base_y_c[5] + 1], left[base_y_c[6] + 1], left[base_y_c[7] + 1]);
+ show +
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
if (upsample_left) { shifty = _mm_srli_epi16( _mm_and_si128(_mm_slli_epi16((y_c128), upsample_left), c3f), 1); } else { shifty = _mm_srli_epi16(_mm_and_si128(y_c128, c3f), 1); } a0_x = _mm256_inserti128_si256(a0_x, a0_y, 1); a1_x = _mm256_inserti128_si256(a1_x, a1_y, 1); shift = _mm256_inserti128_si256(shift, shifty, 1);

[CVE-2020-0478_1.diff] intrapred_avx2.c #96
- if (base_shift > 7) { - a0_x = _mm256_setzero_si256(); - a1_x = _mm256_setzero_si256(); - shift = _mm256_setzero_si256(); - } else { + + if (base_shift < 16) {
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/x86/intrapred_avx2.c
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
base_shift = (min_base_x - base_x) >> upsample_above; } int base_min_diff = (min_base_x - base_x + upsample_above) >> upsample_above; if (base_min_diff > 8) { base_min_diff = 8; } else { if (base_min_diff < 0) base_min_diff = 0; }
+ show +
2400
2401
2402
2403
2404
if (base_shift > 7) { a0_x = _mm256_setzero_si256(); a1_x = _mm256_setzero_si256(); shift = _mm256_setzero_si256(); } else {
+ show +
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
a0_x128 = _mm_loadu_si128((__m128i *)(above + base_x + base_shift)); if (upsample_above) { __m128i mask, atmp0, atmp1, atmp2, atmp3; a1_x128 = _mm_loadu_si128((__m128i *)(above + base_x + 8 + base_shift)); atmp0 = _mm_shuffle_epi8(a0_x128, *(__m128i *)HighbdEvenOddMaskx[base_shift]); atmp1 = _mm_shuffle_epi8(a1_x128, *(__m128i *)HighbdEvenOddMaskx[base_shift]); atmp2 = _mm_shuffle_epi8( a0_x128, *(__m128i *)(HighbdEvenOddMaskx[base_shift] + 16));
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/x86/intrapred_avx2.c
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
base_shift = (min_base_x - base_x - 1) >> upsample_above; } int base_min_diff = (min_base_x - base_x + upsample_above) >> upsample_above; if (base_min_diff > 8) { base_min_diff = 8; } else { if (base_min_diff < 0) base_min_diff = 0; }
+ show +
4017
4018
4019
4020
4021
if (base_shift > 7) { a0_x = _mm256_setzero_si256(); a1_x = _mm256_setzero_si256(); shift = _mm256_setzero_si256(); } else {
+ show +
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
a0_x128 = _mm_loadu_si128((__m128i *)(above + base_x + base_shift)); ydx = _mm_set1_epi16(y * dx); r6 = _mm_slli_epi16(_mm_srli_si128(c1234, 2), 6); if (upsample_above) { a0_x128 = _mm_shuffle_epi8(a0_x128, *(__m128i *)EvenOddMaskx[base_shift]); a1_x128 = _mm_srli_si128(a0_x128, 8); shift = _mm256_castsi128_si256(_mm_srli_epi16( _mm_and_si128(

[CVE-2020-0470_1.diff] intrapred_avx2.c #94
- a1_y = _mm_setr_epi16(left[base_y_c[0] + 1], left[base_y_c[1] + 1], - left[base_y_c[2] + 1], left[base_y_c[3] + 1], - left[base_y_c[4] + 1], left[base_y_c[5] + 1], - left[base_y_c[6] + 1], left[base_y_c[7] + 1]); + base_y_c128 = _mm_add_epi16( + base_y_c128, _mm_srli_epi16(_mm256_castsi256_si128(a16), 4)); + _mm_store_si128((__m128i *)base_y_c, base_y_c128); + + a1_y = _mm_setr_epi16(left[base_y_c[0]], left[base_y_c[1]], + left[base_y_c[2]], left[base_y_c[3]], + left[base_y_c[4]], left[base_y_c[5]], + left[base_y_c[6]], left[base_y_c[7]]);
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/x86/intrapred_avx2.c
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
y_c128 = _mm_sub_epi16(r6, _mm_mullo_epi16(c1234, dy128)); base_y_c128 = _mm_srai_epi16(y_c128, frac_bits_y); mask128 = _mm_cmpgt_epi16(min_base_y128, base_y_c128); base_y_c128 = _mm_andnot_si128(mask128, base_y_c128); _mm_store_si128((__m128i *)base_y_c, base_y_c128); a0_y = _mm_setr_epi16(left[base_y_c[0]], left[base_y_c[1]], left[base_y_c[2]], left[base_y_c[3]], left[base_y_c[4]], left[base_y_c[5]], left[base_y_c[6]], left[base_y_c[7]]);
+ show +
2471
2472
2473
2474
a1_y = _mm_setr_epi16(left[base_y_c[0] + 1], left[base_y_c[1] + 1], left[base_y_c[2] + 1], left[base_y_c[3] + 1], left[base_y_c[4] + 1], left[base_y_c[5] + 1], left[base_y_c[6] + 1], left[base_y_c[7] + 1]);
+ show +
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
if (upsample_left) { shifty = _mm_srli_epi16( _mm_and_si128(_mm_slli_epi16((y_c128), upsample_left), c3f), 1); } else { shifty = _mm_srli_epi16(_mm_and_si128(y_c128, c3f), 1); } a0_x = _mm256_inserti128_si256(a0_x, a0_y, 1); a1_x = _mm256_inserti128_si256(a1_x, a1_y, 1); shift = _mm256_inserti128_si256(shift, shifty, 1);

[CVE-2020-0470_1.diff] intrapred_avx2.c #96
- if (base_shift > 7) { - a0_x = _mm256_setzero_si256(); - a1_x = _mm256_setzero_si256(); - shift = _mm256_setzero_si256(); - } else { + + if (base_shift < 16) {
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/x86/intrapred_avx2.c
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
base_shift = (min_base_x - base_x) >> upsample_above; } int base_min_diff = (min_base_x - base_x + upsample_above) >> upsample_above; if (base_min_diff > 8) { base_min_diff = 8; } else { if (base_min_diff < 0) base_min_diff = 0; }
+ show +
2400
2401
2402
2403
2404
if (base_shift > 7) { a0_x = _mm256_setzero_si256(); a1_x = _mm256_setzero_si256(); shift = _mm256_setzero_si256(); } else {
+ show +
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
a0_x128 = _mm_loadu_si128((__m128i *)(above + base_x + base_shift)); if (upsample_above) { __m128i mask, atmp0, atmp1, atmp2, atmp3; a1_x128 = _mm_loadu_si128((__m128i *)(above + base_x + 8 + base_shift)); atmp0 = _mm_shuffle_epi8(a0_x128, *(__m128i *)HighbdEvenOddMaskx[base_shift]); atmp1 = _mm_shuffle_epi8(a1_x128, *(__m128i *)HighbdEvenOddMaskx[base_shift]); atmp2 = _mm_shuffle_epi8( a0_x128, *(__m128i *)(HighbdEvenOddMaskx[base_shift] + 16));
/media/esteban/ACOS/dotOS/external/libaom/libaom/aom_dsp/x86/intrapred_avx2.c
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
base_shift = (min_base_x - base_x - 1) >> upsample_above; } int base_min_diff = (min_base_x - base_x + upsample_above) >> upsample_above; if (base_min_diff > 8) { base_min_diff = 8; } else { if (base_min_diff < 0) base_min_diff = 0; }
+ show +
4017
4018
4019
4020
4021
if (base_shift > 7) { a0_x = _mm256_setzero_si256(); a1_x = _mm256_setzero_si256(); shift = _mm256_setzero_si256(); } else {
+ show +
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
a0_x128 = _mm_loadu_si128((__m128i *)(above + base_x + base_shift)); ydx = _mm_set1_epi16(y * dx); r6 = _mm_slli_epi16(_mm_srli_si128(c1234, 2), 6); if (upsample_above) { a0_x128 = _mm_shuffle_epi8(a0_x128, *(__m128i *)EvenOddMaskx[base_shift]); a1_x128 = _mm_srli_si128(a0_x128, 8); shift = _mm256_castsi128_si256(_mm_srli_epi16( _mm_and_si128(

[CVE-2020-0478_1.diff] picklpf.c #7
- lf->filter_level[0] = - search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, - last_frame_filter_level, NULL, 0, 0); - lf->filter_level[1] = - search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, - last_frame_filter_level, NULL, 0, 1); + if (method != LPF_PICK_FROM_FULL_IMAGE_NON_DUAL) { + lf->filter_level[0] = + search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, + last_frame_filter_level, NULL, 0, 0); + lf->filter_level[1] = + search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, + last_frame_filter_level, NULL, 0, 1); + }
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/encoder/picklpf.c
258
259
260
261
262
263
264
265
266
267
} else { const int last_frame_filter_level[4] = { lf->filter_level[0], lf->filter_level[1], lf->filter_level_u, lf->filter_level_v }; lf->filter_level[0] = lf->filter_level[1] = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 0, 2); if (method != LPF_PICK_FROM_FULL_IMAGE_NON_DUAL) {
+ show +
268
269
270
271
272
273
lf->filter_level[0] = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 0, 0); lf->filter_level[1] = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 0, 1);
+ show +
274
275
276
277
278
279
280
281
282
283
} if (num_planes > 1) { lf->filter_level_u = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 1, 0); lf->filter_level_v = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 2, 0); }

[CVE-2020-0470_1.diff] picklpf.c #7
- lf->filter_level[0] = - search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, - last_frame_filter_level, NULL, 0, 0); - lf->filter_level[1] = - search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, - last_frame_filter_level, NULL, 0, 1); + if (method != LPF_PICK_FROM_FULL_IMAGE_NON_DUAL) { + lf->filter_level[0] = + search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, + last_frame_filter_level, NULL, 0, 0); + lf->filter_level[1] = + search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, + last_frame_filter_level, NULL, 0, 1); + }
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/encoder/picklpf.c
258
259
260
261
262
263
264
265
266
267
} else { const int last_frame_filter_level[4] = { lf->filter_level[0], lf->filter_level[1], lf->filter_level_u, lf->filter_level_v }; lf->filter_level[0] = lf->filter_level[1] = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 0, 2); if (method != LPF_PICK_FROM_FULL_IMAGE_NON_DUAL) {
+ show +
268
269
270
271
272
273
lf->filter_level[0] = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 0, 0); lf->filter_level[1] = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 0, 1);
+ show +
274
275
276
277
278
279
280
281
282
283
} if (num_planes > 1) { lf->filter_level_u = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 1, 0); lf->filter_level_v = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE, last_frame_filter_level, NULL, 2, 0); }

[CVE-2020-0478_1.diff] firstpass.h #3
-enum { - KF_UPDATE, - LF_UPDATE, - GF_UPDATE, - ARF_UPDATE, - OVERLAY_UPDATE, - INTNL_OVERLAY_UPDATE, // Internal Overlay Frame - INTNL_ARF_UPDATE, // Internal Altref Frame - FRAME_UPDATE_TYPES -} UENUM1BYTE(FRAME_UPDATE_TYPE); -
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/encoder/ratectrl.h
61
62
63
64
65
66
67
68
69
70
} size_params_type; enum { INTER_NORMAL, GF_ARF_LOW, GF_ARF_STD, KF_STD, RATE_FACTOR_LEVELS } UENUM1BYTE(RATE_FACTOR_LEVEL);
+ show +
71
72
73
74
75
76
77
78
79
80
enum { KF_UPDATE, LF_UPDATE, GF_UPDATE, ARF_UPDATE, OVERLAY_UPDATE, INTNL_OVERLAY_UPDATE, // Internal Overlay Frame INTNL_ARF_UPDATE, // Internal Altref Frame FRAME_UPDATE_TYPES } UENUM1BYTE(FRAME_UPDATE_TYPE);
+ show +
81
82
83
84
85
86
87
88
89
90
typedef struct { // Rate targetting variables int base_frame_target; // A baseline frame target before adjustment // for previous under or over shoot. int this_frame_target; // Actual frame target after rc adjustment. // gop bit budget int64_t gf_group_bits;

[CVE-2020-0470_1.diff] firstpass.h #3
-enum { - KF_UPDATE, - LF_UPDATE, - GF_UPDATE, - ARF_UPDATE, - OVERLAY_UPDATE, - INTNL_OVERLAY_UPDATE, // Internal Overlay Frame - INTNL_ARF_UPDATE, // Internal Altref Frame - FRAME_UPDATE_TYPES -} UENUM1BYTE(FRAME_UPDATE_TYPE); -
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/encoder/ratectrl.h
61
62
63
64
65
66
67
68
69
70
} size_params_type; enum { INTER_NORMAL, GF_ARF_LOW, GF_ARF_STD, KF_STD, RATE_FACTOR_LEVELS } UENUM1BYTE(RATE_FACTOR_LEVEL);
+ show +
71
72
73
74
75
76
77
78
79
80
enum { KF_UPDATE, LF_UPDATE, GF_UPDATE, ARF_UPDATE, OVERLAY_UPDATE, INTNL_OVERLAY_UPDATE, // Internal Overlay Frame INTNL_ARF_UPDATE, // Internal Altref Frame FRAME_UPDATE_TYPES } UENUM1BYTE(FRAME_UPDATE_TYPE);
+ show +
81
82
83
84
85
86
87
88
89
90
typedef struct { // Rate targetting variables int base_frame_target; // A baseline frame target before adjustment // for previous under or over shoot. int this_frame_target; // Actual frame target after rc adjustment. // gop bit budget int64_t gf_group_bits;

[CVE-2020-0478_1.diff] onyxc_int.h #7
- int enable_order_hint; // 0 - disable order hint, and related tools - int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, - // frame_sign_bias - // if 0, enable_dist_wtd_comp and - // enable_ref_frame_mvs must be set as 0. - int enable_dist_wtd_comp; // 0 - disable dist-wtd compound modes - // 1 - enable it - int enable_ref_frame_mvs; // 0 - disable ref frame mvs - // 1 - enable it + int enable_order_hint; // 0 - disable order hint, and related tools + int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, + // frame_sign_bias + // if 0, enable_dist_wtd_comp and + // enable_ref_frame_mvs must be set as 0. + int enable_dist_wtd_comp; // 0 - disable dist-wtd compound modes + // 1 - enable it + int enable_ref_frame_mvs; // 0 - disable ref frame mvs + // 1 - enable it +// One exception is the last member 'op_params' that is ignored by +// are_seq_headers_consistent() function.
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/common/av1_common_int.h
201
202
203
204
205
206
207
208
209
210
int delta_lf_present_flag; // Resolution of delta lf level int delta_lf_res; // This is a flag for number of deltas of loop filter level // 0: use 1 delta, for y_vertical, y_horizontal, u, and v // 1: use separate deltas for each filter level int delta_lf_multi; } DeltaQInfo; typedef struct {
+ show +
211
212
213
214
215
216
217
218
int enable_order_hint; // 0 - disable order hint, and related tools int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, // frame_sign_bias // if 0, enable_dist_wtd_comp and // enable_ref_frame_mvs must be set as 0. int enable_dist_wtd_comp; // 0 - disable dist-wtd compound modes // 1 - enable it int enable_ref_frame_mvs; // 0 - disable ref frame mvs
+ show +
219
220
221
222
223
224
225
226
227
228
// 1 - enable it } OrderHintInfo; // Sequence header structure. // Note: All syntax elements of sequence_header_obu that need to be // bit-identical across multiple sequence headers must be part of this struct, // so that consistency is checked by are_seq_headers_consistent() function. // One exception is the last member 'op_params' that is ignored by // are_seq_headers_consistent() function. typedef struct SequenceHeader {

[CVE-2020-0470_1.diff] onyxc_int.h #7
- int enable_order_hint; // 0 - disable order hint, and related tools - int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, - // frame_sign_bias - // if 0, enable_dist_wtd_comp and - // enable_ref_frame_mvs must be set as 0. - int enable_dist_wtd_comp; // 0 - disable dist-wtd compound modes - // 1 - enable it - int enable_ref_frame_mvs; // 0 - disable ref frame mvs - // 1 - enable it + int enable_order_hint; // 0 - disable order hint, and related tools + int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, + // frame_sign_bias + // if 0, enable_dist_wtd_comp and + // enable_ref_frame_mvs must be set as 0. + int enable_dist_wtd_comp; // 0 - disable dist-wtd compound modes + // 1 - enable it + int enable_ref_frame_mvs; // 0 - disable ref frame mvs + // 1 - enable it +// One exception is the last member 'op_params' that is ignored by +// are_seq_headers_consistent() function.
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/common/av1_common_int.h
201
202
203
204
205
206
207
208
209
210
int delta_lf_present_flag; // Resolution of delta lf level int delta_lf_res; // This is a flag for number of deltas of loop filter level // 0: use 1 delta, for y_vertical, y_horizontal, u, and v // 1: use separate deltas for each filter level int delta_lf_multi; } DeltaQInfo; typedef struct {
+ show +
211
212
213
214
215
216
217
218
int enable_order_hint; // 0 - disable order hint, and related tools int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, // frame_sign_bias // if 0, enable_dist_wtd_comp and // enable_ref_frame_mvs must be set as 0. int enable_dist_wtd_comp; // 0 - disable dist-wtd compound modes // 1 - enable it int enable_ref_frame_mvs; // 0 - disable ref frame mvs
+ show +
219
220
221
222
223
224
225
226
227
228
// 1 - enable it } OrderHintInfo; // Sequence header structure. // Note: All syntax elements of sequence_header_obu that need to be // bit-identical across multiple sequence headers must be part of this struct, // so that consistency is checked by are_seq_headers_consistent() function. // One exception is the last member 'op_params' that is ignored by // are_seq_headers_consistent() function. typedef struct SequenceHeader {

[CVE-2020-0478_1.diff] av1_inv_txfm_neon.c #19
- btf_16_lane_0_1_neon(x[8], x[9], c4, &s8, &s9); - btf_16_lane_2_3_neon(x[10], x[11], c4, &s10, &s11); - btf_16_lane_1_0_neon(x[13], x[12], c4, &s13, &s12); - btf_16_lane_3_2_neon(x[15], x[14], c4, &s15, &s14); + btf_16_lane_0_1_neon(x[8], x[9], c0, &s8, &s9); + btf_16_lane_2_3_neon(x[10], x[11], c0, &s10, &s11); + btf_16_lane_1_0_neon(x[13], x[12], c0, &s13, &s12); + btf_16_lane_3_2_neon(x[15], x[14], c0, &s15, &s14);
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/common/arm/av1_inv_txfm_neon.c
857
858
859
860
861
862
863
864
865
866
// Stage 4 t[0] = x[0]; t[1] = x[1]; t[2] = x[2]; t[3] = x[3]; t[4] = x[4]; t[5] = x[5]; t[6] = x[6]; t[7] = x[7];
+ show +
867
868
869
870
btf_16_lane_0_1_neon(x[8], x[9], c4, &s8, &s9); btf_16_lane_2_3_neon(x[10], x[11], c4, &s10, &s11); btf_16_lane_1_0_neon(x[13], x[12], c4, &s13, &s12); btf_16_lane_3_2_neon(x[15], x[14], c4, &s15, &s14);
+ show +
871
872
873
874
875
876
877
878
879
880
// Stage 5 x[0] = vqaddq_s16(t[0], t[4]); x[1] = vqaddq_s16(t[1], t[5]); x[2] = vqaddq_s16(t[2], t[6]); x[3] = vqaddq_s16(t[3], t[7]); x[4] = vqsubq_s16(t[0], t[4]); x[5] = vqsubq_s16(t[1], t[5]); x[6] = vqsubq_s16(t[2], t[6]); x[7] = vqsubq_s16(t[3], t[7]);

[CVE-2020-0470_1.diff] av1_inv_txfm_neon.c #19
- btf_16_lane_0_1_neon(x[8], x[9], c4, &s8, &s9); - btf_16_lane_2_3_neon(x[10], x[11], c4, &s10, &s11); - btf_16_lane_1_0_neon(x[13], x[12], c4, &s13, &s12); - btf_16_lane_3_2_neon(x[15], x[14], c4, &s15, &s14); + btf_16_lane_0_1_neon(x[8], x[9], c0, &s8, &s9); + btf_16_lane_2_3_neon(x[10], x[11], c0, &s10, &s11); + btf_16_lane_1_0_neon(x[13], x[12], c0, &s13, &s12); + btf_16_lane_3_2_neon(x[15], x[14], c0, &s15, &s14);
/media/esteban/ACOS/dotOS/external/libaom/libaom/av1/common/arm/av1_inv_txfm_neon.c
857
858
859
860
861
862
863
864
865
866
// Stage 4 t[0] = x[0]; t[1] = x[1]; t[2] = x[2]; t[3] = x[3]; t[4] = x[4]; t[5] = x[5]; t[6] = x[6]; t[7] = x[7];
+ show +
867
868
869
870
btf_16_lane_0_1_neon(x[8], x[9], c4, &s8, &s9); btf_16_lane_2_3_neon(x[10], x[11], c4, &s10, &s11); btf_16_lane_1_0_neon(x[13], x[12], c4, &s13, &s12); btf_16_lane_3_2_neon(x[15], x[14], c4, &s15, &s14);
+ show +
871
872
873
874
875
876
877
878
879
880
// Stage 5 x[0] = vqaddq_s16(t[0], t[4]); x[1] = vqaddq_s16(t[1], t[5]); x[2] = vqaddq_s16(t[2], t[6]); x[3] = vqaddq_s16(t[3], t[7]); x[4] = vqsubq_s16(t[0], t[4]); x[5] = vqsubq_s16(t[1], t[5]); x[6] = vqsubq_s16(t[2], t[6]); x[7] = vqsubq_s16(t[3], t[7]);

[CVE-2020-0478_1.diff] obudec.c #1
- uint8_t *new_buffer = (uint8_t *)realloc(*buffer, tu_size); - if (!new_buffer) { - free(*buffer); - fprintf(stderr, "obudec: Out of memory.\n"); - return -1; + if (tu_size > 0) { + uint8_t *new_buffer = (uint8_t *)realloc(*buffer, tu_size); + if (!new_buffer) { + free(*buffer); + fprintf(stderr, "obudec: Out of memory.\n"); + return -1; + } + *buffer = new_buffer; - *buffer = new_buffer;
/media/esteban/ACOS/dotOS/external/libaom/libaom/common/obudec.c
432
433
434
435
436
437
438
439
440
441
} } #if defined AOM_MAX_ALLOCABLE_MEMORY if (tu_size > AOM_MAX_ALLOCABLE_MEMORY) { fprintf(stderr, "obudec: Temporal Unit size exceeds max alloc size.\n"); return -1; } #endif if (tu_size > 0) {
+ show +
442
443
444
445
446
447
448
uint8_t *new_buffer = (uint8_t *)realloc(*buffer, tu_size); if (!new_buffer) { free(*buffer); fprintf(stderr, "obudec: Out of memory.\n"); return -1; } *buffer = new_buffer;
+ show +
449
450
451
452
453
454
455
456
457
458
} *bytes_read = tu_size; *buffer_size = tu_size; if (!obu_ctx->is_annexb) { memcpy(*buffer, obu_ctx->buffer, tu_size); // At this point, (obu_ctx->buffer + obu_ctx->bytes_buffered + obu_size) // points to the end of the buffer. memmove(obu_ctx->buffer, obu_ctx->buffer + obu_ctx->bytes_buffered,

[CVE-2020-0470_1.diff] obudec.c #1
- uint8_t *new_buffer = (uint8_t *)realloc(*buffer, tu_size); - if (!new_buffer) { - free(*buffer); - fprintf(stderr, "obudec: Out of memory.\n"); - return -1; + if (tu_size > 0) { + uint8_t *new_buffer = (uint8_t *)realloc(*buffer, tu_size); + if (!new_buffer) { + free(*buffer); + fprintf(stderr, "obudec: Out of memory.\n"); + return -1; + } + *buffer = new_buffer; - *buffer = new_buffer;
/media/esteban/ACOS/dotOS/external/libaom/libaom/common/obudec.c
432
433
434
435
436
437
438
439
440
441
} } #if defined AOM_MAX_ALLOCABLE_MEMORY if (tu_size > AOM_MAX_ALLOCABLE_MEMORY) { fprintf(stderr, "obudec: Temporal Unit size exceeds max alloc size.\n"); return -1; } #endif if (tu_size > 0) {
+ show +
442
443
444
445
446
447
448
uint8_t *new_buffer = (uint8_t *)realloc(*buffer, tu_size); if (!new_buffer) { free(*buffer); fprintf(stderr, "obudec: Out of memory.\n"); return -1; } *buffer = new_buffer;
+ show +
449
450
451
452
453
454
455
456
457
458
} *bytes_read = tu_size; *buffer_size = tu_size; if (!obu_ctx->is_annexb) { memcpy(*buffer, obu_ctx->buffer, tu_size); // At this point, (obu_ctx->buffer + obu_ctx->bytes_buffered + obu_size) // points to the end of the buffer. memmove(obu_ctx->buffer, obu_ctx->buffer + obu_ctx->bytes_buffered,

[CVE-2023-21034_1.diff] SensorService.cpp #4
+ resetTargetSdkVersionCache(opPackageName); + resetTargetSdkVersionCache(opPackageName); + resetTargetSdkVersionCache(opPackageName); - { - Mutex::Autolock packageLock(sPackageTargetVersionLock); - auto iter = sPackageTargetVersion.find(c->mOpPackageName); - if (iter != sPackageTargetVersion.end()) { - sPackageTargetVersion.erase(iter); - } - } -
/media/esteban/ACOS/dotOS/frameworks/native/services/sensorservice/SensorService.cpp
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
} } c->updateLooperRegistration(mLooper); mConnectionHolder.removeEventConnection(connection); BatteryService::cleanup(c->getUid()); if (c->needsWakeLock()) { checkWakeLockStateLocked(&connLock); } {
+ show +
1584
1585
1586
1587
Mutex::Autolock packageLock(sPackageTargetVersionLock); auto iter = sPackageTargetVersion.find(c->mOpPackageName); if (iter != sPackageTargetVersion.end()) { sPackageTargetVersion.erase(iter);
+ show +
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
} } SensorDevice& dev(SensorDevice::getInstance()); dev.notifyConnectionDestroyed(c); } void SensorService::cleanupConnection(SensorDirectConnection* c) { Mutex::Autolock _l(mLock);

[CVE-2022-20540_1.diff] SurfaceFlinger.cpp #4
- { - StringAppendF(&result, "Composition layers\n"); - mDrawingState.traverseInZOrder([&](Layer* layer) { - auto* compositionState = layer->getCompositionState(); - if (!compositionState || !compositionState->isVisible) return; - - android::base::StringAppendF(&result, "* Layer %p (%s)\n", layer, - layer->getDebugName() ? layer->getDebugName() - : "<unknown>"); - compositionState->dump(result); - }); - } + result.append(compositionLayers);
/media/esteban/ACOS/dotOS/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
/* * Dump the visible layer list */ colorizer.bold(result); StringAppendF(&result, "Visible layers (count = %zu)\n", mNumLayers.load()); StringAppendF(&result, "GraphicBufferProducers: %zu, max %zu\n", mGraphicBufferProducerList.size(), mMaxGraphicBufferProducerListSize); colorizer.reset(result); {
+ show +
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
StringAppendF(&result, "Composition layers\n"); mDrawingState.traverseInZOrder([&](Layer* layer) { auto* compositionState = layer->getCompositionState(); if (!compositionState || !compositionState->isVisible) return; android::base::StringAppendF(&result, "* Layer %p (%s)\n", layer, layer->getDebugName() ? layer->getDebugName() : "<unknown>"); compositionState->dump(result); });
+ show +
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
} /* * Dump Display state */ colorizer.bold(result); StringAppendF(&result, "Displays (%zu entries)\n", mDisplays.size()); colorizer.reset(result); for (const auto& [token, display] : mDisplays) {

[CVE-2023-40103_1.diff] android_content_res_ApkAssets.cpp #1
-Guarded<std::unique_ptr<const ApkAssets>>& ApkAssetsFromLong(jlong ptr) { - return *reinterpret_cast<Guarded<std::unique_ptr<const ApkAssets>>*>(ptr); +Guarded<AssetManager2::ApkAssetsPtr>& ApkAssetsFromLong(jlong ptr) { + return *reinterpret_cast<Guarded<AssetManager2::ApkAssetsPtr>*>(ptr); -static jlong CreateGuardedApkAssets(std::unique_ptr<const ApkAssets> assets) { - auto guarded_assets = new Guarded<std::unique_ptr<const ApkAssets>>(std::move(assets)); - return reinterpret_cast<jlong>(guarded_assets); +static jlong CreateGuardedApkAssets(AssetManager2::ApkAssetsPtr assets) { + auto guarded_assets = new Guarded<AssetManager2::ApkAssetsPtr>(std::move(assets)); + return reinterpret_cast<jlong>(guarded_assets); -static void DeleteGuardedApkAssets(Guarded<std::unique_ptr<const ApkAssets>>& apk_assets) { - delete &apk_assets; +static void DeleteGuardedApkAssets(Guarded<AssetManager2::ApkAssetsPtr>& apk_assets) { + apk_assets.safeDelete([&apk_assets](AssetManager2::ApkAssetsPtr* assets) { + if (!assets) { + ALOGW("ApkAssets: Double delete of native assets object %p, ignored", &apk_assets); + } else if (!*assets) { + ALOGW("ApkAssets: Empty native assets pointer in native assets object %p", &apk_assets); + } else { + // |RefBase| increments |StrongCount| for each |sp<>| instance, and |WeakCount| for + // both |sp<>| and |wp<>| instances. This means the actual |wp<>| instance count + // is |WeakCount - StrongCount|. + const auto useCount = (*assets)->getStrongCount(); + const auto weakCount = (*assets)->getWeakRefs()->getWeakCount() - useCount; + if (useCount > 1) { + ALOGW("ApkAssets: Deleting an object '%s' with %d > 1 strong and %d weak references", + (*assets)->GetDebugName().c_str(), int(useCount), int(weakCount)); + } else if (weakCount > 0) { + ALOGW("ApkAssets: Deleting an ApkAssets object '%s' with %d weak references", + (*assets)->GetDebugName().c_str(), int(weakCount)); + } + } + }); + delete &apk_assets;
/media/esteban/ACOS/dotOS/frameworks/base/core/jni/android_content_res_ApkAssets.cpp
67
68
69
70
71
72
73
74
75
76
// The path used to load the apk assets represents an idmap file. FORMAT_IDMAP = 1, // The path used to load the apk assets represents an resources.arsc file. FORMAT_ARSC = 2, // The path used to load the apk assets represents the a directory. FORMAT_DIRECTORY = 3, };
+ show +
77
78
79
80
81
82
83
84
85
86
87
Guarded<std::unique_ptr<const ApkAssets>>& ApkAssetsFromLong(jlong ptr) { return *reinterpret_cast<Guarded<std::unique_ptr<const ApkAssets>>*>(ptr); } static jlong CreateGuardedApkAssets(std::unique_ptr<const ApkAssets> assets) { auto guarded_assets = new Guarded<std::unique_ptr<const ApkAssets>>(std::move(assets)); return reinterpret_cast<jlong>(guarded_assets); } static void DeleteGuardedApkAssets(Guarded<std::unique_ptr<const ApkAssets>>& apk_assets) { delete &apk_assets;
+ show +
88
89
90
91
92
93
94
95
96
97
} class LoaderAssetsProvider : public AssetsProvider { public: static std::unique_ptr<AssetsProvider> Create(JNIEnv* env, jobject assets_provider) { return (!assets_provider) ? EmptyAssetsProvider::Create() : std::unique_ptr<AssetsProvider>(new LoaderAssetsProvider( env, assets_provider)); }

[CVE-2024-34720_1.diff] com_android_internal_os_ZygoteCommandBuffer.cpp #4
- if (getsockopt(session_socket, SOL_SOCKET, SO_PEERCRED, &credentials, &cred_size) == -1) { - fail_fn_z(CREATE_ERROR("ForkMany failed to get credentials: %s", strerror(errno))); - } - if (cred_size != sizeof credentials) { - fail_fn_z(CREATE_ERROR("ForkMany credential size = %d, should be %d", - cred_size, static_cast<int>(sizeof credentials))); - }
/media/esteban/ACOS/dotOS/frameworks/base/core/jni/com_android_internal_os_ZygoteCommandBuffer.cpp
467
468
469
470
471
472
473
474
475
476
// If we ever return, we effectively reuse the old Java ZygoteConnection. // None of its state needs to change. if (setsockopt(session_socket, SOL_SOCKET, SO_RCVTIMEO, &timeout, timeout_size) != 0) { fail_fn_z(CREATE_ERROR("Failed to set receive timeout for socket %d: %s", session_socket, strerror(errno))); } if (setsockopt(session_socket, SOL_SOCKET, SO_SNDTIMEO, &timeout, timeout_size) != 0) { fail_fn_z(CREATE_ERROR("Failed to set send timeout for socket %d: %s", session_socket, strerror(errno))); }
+ show +
477
478
479
480
481
482
if (getsockopt(session_socket, SOL_SOCKET, SO_PEERCRED, &credentials, &cred_size) == -1) { fail_fn_z(CREATE_ERROR("ForkMany failed to get credentials: %s", strerror(errno))); } if (cred_size != sizeof credentials) { fail_fn_z(CREATE_ERROR("ForkMany credential size = %d, should be %d", cred_size, static_cast<int>(sizeof credentials)));
+ show +
483
484
485
486
487
488
489
490
491
492
} } first_time = false; } while (n_buffer->isSimpleForkCommand(minUid, fail_fn_n)); ALOGW("forkRepeatedly terminated due to non-simple command"); n_buffer->logState(); n_buffer->reset(); return JNI_FALSE; }

[CVE-2023-20920_1.diff] UsbRequest.java #1
+ * This is meant to be called by UsbRequest's queue() in order to synchronize on + * UsbDeviceConnection's mLock to prevent the connection being closed while queueing. + */ + /* package */ boolean queueRequest(UsbRequest request, ByteBuffer buffer, int length) { + synchronized (mLock) { + if (!isOpen()) { + return false; + } + + return request.queueIfConnectionOpen(buffer, length); + } + } + + /** + * This is meant to be called by UsbRequest's queue() in order to synchronize on + * UsbDeviceConnection's mLock to prevent the connection being closed while queueing. + */ + /* package */ boolean queueRequest(UsbRequest request, @Nullable ByteBuffer buffer) { + synchronized (mLock) { + if (!isOpen()) { + return false; + } + + return request.queueIfConnectionOpen(buffer); + } + } + + /** - if (mNativeContext != 0) { - mEndpoint = null; - mConnection = null; - native_close(); - mCloseGuard.close(); + synchronized (mLock) { + if (mNativeContext != 0) { + mEndpoint = null; + mConnection = null; + native_close(); + mCloseGuard.close(); + }
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/hardware/usb/UsbRequest.java
106
107
108
109
110
111
112
113
114
115
mCloseGuard.open("close"); } return wasInitialized; } /** * Releases all resources related to this request. */ public void close() {
+ show +
116
117
118
119
120
if (mNativeContext != 0) { mEndpoint = null; mConnection = null; native_close(); mCloseGuard.close();
+ show +
121
122
123
124
125
126
127
128
129
130
} } @Override protected void finalize() throws Throwable { try { if (mCloseGuard != null) { mCloseGuard.warnIfOpen(); }

[CVE-2023-21143_1.diff] AppWidgetHostView.java #2
+import android.graphics.Canvas; - removeViewInLayout(mView); - View child = getErrorView(); - prepareView(child); - addViewInLayout(child, 0, child.getLayoutParams()); - measureChild(child, MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); - child.layout(0, 0, child.getMeasuredWidth() + mPaddingLeft + mPaddingRight, - child.getMeasuredHeight() + mPaddingTop + mPaddingBottom); - mView = child; - mViewMode = VIEW_MODE_ERROR; + handleViewError(); + * Remove bad view and replace with error message view + */ + private void handleViewError() { + removeViewInLayout(mView); + View child = getErrorView(); + prepareView(child); + addViewInLayout(child, 0, child.getLayoutParams()); + measureChild(child, MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); + child.layout(0, 0, child.getMeasuredWidth() + mPaddingLeft + mPaddingRight, + child.getMeasuredHeight() + mPaddingTop + mPaddingBottom); + mView = child; + mViewMode = VIEW_MODE_ERROR; + } + + /**
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/appwidget/AppWidgetHostView.java
305
306
307
308
309
310
311
312
313
314
measureChildWithMargins(mView, MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY), 0 /* widthUsed */, MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY), 0 /* heightUsed */); } } super.onLayout(changed, left, top, right, bottom); } catch (final RuntimeException e) { Log.e(TAG, "Remote provider threw runtime exception, using error view instead.", e);
+ show +
315
316
317
318
319
320
321
322
323
324
removeViewInLayout(mView); View child = getErrorView(); prepareView(child); addViewInLayout(child, 0, child.getLayoutParams()); measureChild(child, MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); child.layout(0, 0, child.getMeasuredWidth() + mPaddingLeft + mPaddingRight, child.getMeasuredHeight() + mPaddingTop + mPaddingBottom); mView = child; mViewMode = VIEW_MODE_ERROR;
+ show +
325
326
327
328
329
330
331
332
333
334
} } /** * Provide guidance about the size of this widget to the AppWidgetManager. The widths and * heights should correspond to the full area the AppWidgetHostView is given. Padding added by * the framework will be accounted for automatically. This information gets embedded into the * AppWidget options and causes a callback to the AppWidgetProvider. In addition, the list of * sizes is explicitly set to an empty list. * @see AppWidgetProvider#onAppWidgetOptionsChanged(Context, AppWidgetManager, int, Bundle)

[CVE-2021-0934_1.diff] Account.java #2
- if (name.length() > 200) { - throw new IllegalArgumentException("account name is longer than 200 characters"); - } - if (type.length() > 200) { - throw new IllegalArgumentException("account type is longer than 200 characters"); - }
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/accounts/Account.java
80
81
82
83
84
85
86
87
88
89
/** * @hide */ public Account(String name, String type, String accessId) { if (TextUtils.isEmpty(name)) { throw new IllegalArgumentException("the name must not be empty: " + name); } if (TextUtils.isEmpty(type)) { throw new IllegalArgumentException("the type must not be empty: " + type); }
+ show +
90
91
92
93
94
if (name.length() > 200) { throw new IllegalArgumentException("account name is longer than 200 characters"); } if (type.length() > 200) { throw new IllegalArgumentException("account type is longer than 200 characters");
+ show +
95
96
97
98
99
100
101
102
103
104
} this.name = name; this.type = type; this.accessId = accessId; } public Account(Parcel in) { this.name = in.readString(); this.type = in.readString(); if (TextUtils.isEmpty(name)) {

[CVE-2022-20493_1.diff] Condition.java #2
+ * The maximum string length for any string contained in this condition. + * @hide + */ + public static final int MAX_STRING_LENGTH = 1000; + + /** - this.id = id; - this.summary = summary; - this.line1 = line1; - this.line2 = line2; + this.id = getTrimmedUri(id); + this.summary = getTrimmedString(summary); + this.line1 = getTrimmedString(line1); + this.line2 = getTrimmedString(line2); + // This constructor passes all fields directly into the constructor that takes all the + // fields as arguments; that constructor will trim each of the input strings to + // max length if necessary.
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/service/notification/Condition.java
97
98
99
100
101
102
103
104
105
106
*/ public Condition(Uri id, String summary, int state) { this(id, summary, "", "", -1, state, FLAG_RELEVANT_ALWAYS); } public Condition(Uri id, String summary, String line1, String line2, int icon, int state, int flags) { if (id == null) throw new IllegalArgumentException("id is required"); if (summary == null) throw new IllegalArgumentException("summary is required"); if (!isValidState(state)) throw new IllegalArgumentException("state is invalid: " + state);
+ show +
107
108
109
110
this.id = id; this.summary = summary; this.line1 = line1; this.line2 = line2;
+ show +
111
112
113
114
115
116
117
118
119
120
this.icon = icon; this.state = state; this.flags = flags; } public Condition(Parcel source) { this((Uri)source.readParcelable(Condition.class.getClassLoader()), source.readString(), source.readString(), source.readString(),

[CVE-2024-43084_1.diff] Notification.java #3
- visitor.accept(message.getDataUri()); - - Person senderPerson = message.getSenderPerson(); - if (senderPerson != null) { - visitor.accept(senderPerson.getIconUri()); - } + message.visitUris(visitor);
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/Notification.java
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
if (person != null) { visitor.accept(person.getIconUri()); } } if (isStyle(MessagingStyle.class) && extras != null) { final Parcelable[] messages = extras.getParcelableArray(EXTRA_MESSAGES); if (!ArrayUtils.isEmpty(messages)) { for (MessagingStyle.Message message : MessagingStyle.Message .getMessagesFromBundleArray(messages)) {
+ show +
2817
2818
2819
2820
2821
visitor.accept(message.getDataUri()); Person senderPerson = message.getSenderPerson(); if (senderPerson != null) { visitor.accept(senderPerson.getIconUri());
+ show +
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
} } } final Parcelable[] historic = extras.getParcelableArray(EXTRA_HISTORIC_MESSAGES); if (!ArrayUtils.isEmpty(historic)) { for (MessagingStyle.Message message : MessagingStyle.Message .getMessagesFromBundleArray(historic)) { visitor.accept(message.getDataUri());
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/Notification.java
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
if (senderPerson != null) { visitor.accept(senderPerson.getIconUri()); } } } final Parcelable[] historic = extras.getParcelableArray(EXTRA_HISTORIC_MESSAGES); if (!ArrayUtils.isEmpty(historic)) { for (MessagingStyle.Message message : MessagingStyle.Message .getMessagesFromBundleArray(historic)) {
+ show +
2830
2831
2832
2833
2834
visitor.accept(message.getDataUri()); Person senderPerson = message.getSenderPerson(); if (senderPerson != null) { visitor.accept(senderPerson.getIconUri());
+ show +
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
} } } } if (mBubbleMetadata != null) { visitIconUri(visitor, mBubbleMetadata.getIcon()); } }

[CVE-2024-43084_1.diff] Notification.java #4
- visitor.accept(message.getDataUri()); - - Person senderPerson = message.getSenderPerson(); - if (senderPerson != null) { - visitor.accept(senderPerson.getIconUri()); - } + message.visitUris(visitor);
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/Notification.java
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
if (person != null) { visitor.accept(person.getIconUri()); } } if (isStyle(MessagingStyle.class) && extras != null) { final Parcelable[] messages = extras.getParcelableArray(EXTRA_MESSAGES); if (!ArrayUtils.isEmpty(messages)) { for (MessagingStyle.Message message : MessagingStyle.Message .getMessagesFromBundleArray(messages)) {
+ show +
2817
2818
2819
2820
2821
visitor.accept(message.getDataUri()); Person senderPerson = message.getSenderPerson(); if (senderPerson != null) { visitor.accept(senderPerson.getIconUri());
+ show +
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
} } } final Parcelable[] historic = extras.getParcelableArray(EXTRA_HISTORIC_MESSAGES); if (!ArrayUtils.isEmpty(historic)) { for (MessagingStyle.Message message : MessagingStyle.Message .getMessagesFromBundleArray(historic)) { visitor.accept(message.getDataUri());
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/Notification.java
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
if (senderPerson != null) { visitor.accept(senderPerson.getIconUri()); } } } final Parcelable[] historic = extras.getParcelableArray(EXTRA_HISTORIC_MESSAGES); if (!ArrayUtils.isEmpty(historic)) { for (MessagingStyle.Message message : MessagingStyle.Message .getMessagesFromBundleArray(historic)) {
+ show +
2830
2831
2832
2833
2834
visitor.accept(message.getDataUri()); Person senderPerson = message.getSenderPerson(); if (senderPerson != null) { visitor.accept(senderPerson.getIconUri());
+ show +
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
} } } } if (mBubbleMetadata != null) { visitIconUri(visitor, mBubbleMetadata.getIcon()); } }

[CVE-2022-20494_1.diff] AutomaticZenRule.java #2
+ * The maximum string length for any string contained in this automatic zen rule. This pertains + * both to fields in the rule itself (such as its name) and items with sub-fields. + * @hide + */ + public static final int MAX_STRING_LENGTH = 1000; + + /** - this.name = name; - this.owner = owner; - this.configurationActivity = configurationActivity; - this.conditionId = conditionId; + this.name = getTrimmedString(name); + this.owner = getTrimmedComponentName(owner); + this.configurationActivity = getTrimmedComponentName(configurationActivity); + this.conditionId = getTrimmedUri(conditionId);
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/AutomaticZenRule.java
86
87
88
89
90
91
92
93
94
95
* interrupt the user (e.g. via sound &amp; vibration) while this rule * is active. * @param policy The policy defines which notifications are allowed to interrupt the user * while this rule is active. This overrides the global policy while this rule is * action ({@link Condition#STATE_TRUE}). * @param enabled Whether the rule is enabled. */ public AutomaticZenRule(@NonNull String name, @Nullable ComponentName owner, @Nullable ComponentName configurationActivity, @NonNull Uri conditionId, @Nullable ZenPolicy policy, int interruptionFilter, boolean enabled) {
+ show +
96
97
98
99
this.name = name; this.owner = owner; this.configurationActivity = configurationActivity; this.conditionId = conditionId;
+ show +
100
101
102
103
104
105
106
107
108
109
this.interruptionFilter = interruptionFilter; this.enabled = enabled; this.mZenPolicy = policy; } /** * @hide */ public AutomaticZenRule(String name, ComponentName owner, ComponentName configurationActivity, Uri conditionId, ZenPolicy policy, int interruptionFilter, boolean enabled,

[CVE-2022-20456_1.diff] AutomaticZenRule.java #2
+ * The maximum string length for any string contained in this automatic zen rule. This pertains + * both to fields in the rule itself (such as its name) and items with sub-fields. + * @hide + */ + public static final int MAX_STRING_LENGTH = 1000; + + /** - this.name = name; - this.owner = owner; - this.configurationActivity = configurationActivity; - this.conditionId = conditionId; + this.name = getTrimmedString(name); + this.owner = getTrimmedComponentName(owner); + this.configurationActivity = getTrimmedComponentName(configurationActivity); + this.conditionId = getTrimmedUri(conditionId);
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/AutomaticZenRule.java
86
87
88
89
90
91
92
93
94
95
* interrupt the user (e.g. via sound &amp; vibration) while this rule * is active. * @param policy The policy defines which notifications are allowed to interrupt the user * while this rule is active. This overrides the global policy while this rule is * action ({@link Condition#STATE_TRUE}). * @param enabled Whether the rule is enabled. */ public AutomaticZenRule(@NonNull String name, @Nullable ComponentName owner, @Nullable ComponentName configurationActivity, @NonNull Uri conditionId, @Nullable ZenPolicy policy, int interruptionFilter, boolean enabled) {
+ show +
96
97
98
99
this.name = name; this.owner = owner; this.configurationActivity = configurationActivity; this.conditionId = conditionId;
+ show +
100
101
102
103
104
105
106
107
108
109
this.interruptionFilter = interruptionFilter; this.enabled = enabled; this.mZenPolicy = policy; } /** * @hide */ public AutomaticZenRule(String name, ComponentName owner, ComponentName configurationActivity, Uri conditionId, ZenPolicy policy, int interruptionFilter, boolean enabled,

[CVE-2022-20490_1.diff] AutomaticZenRule.java #2
+ * The maximum string length for any string contained in this automatic zen rule. This pertains + * both to fields in the rule itself (such as its name) and items with sub-fields. + * @hide + */ + public static final int MAX_STRING_LENGTH = 1000; + + /** - this.name = name; - this.owner = owner; - this.configurationActivity = configurationActivity; - this.conditionId = conditionId; + this.name = getTrimmedString(name); + this.owner = getTrimmedComponentName(owner); + this.configurationActivity = getTrimmedComponentName(configurationActivity); + this.conditionId = getTrimmedUri(conditionId);
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/AutomaticZenRule.java
86
87
88
89
90
91
92
93
94
95
* interrupt the user (e.g. via sound &amp; vibration) while this rule * is active. * @param policy The policy defines which notifications are allowed to interrupt the user * while this rule is active. This overrides the global policy while this rule is * action ({@link Condition#STATE_TRUE}). * @param enabled Whether the rule is enabled. */ public AutomaticZenRule(@NonNull String name, @Nullable ComponentName owner, @Nullable ComponentName configurationActivity, @NonNull Uri conditionId, @Nullable ZenPolicy policy, int interruptionFilter, boolean enabled) {
+ show +
96
97
98
99
this.name = name; this.owner = owner; this.configurationActivity = configurationActivity; this.conditionId = conditionId;
+ show +
100
101
102
103
104
105
106
107
108
109
this.interruptionFilter = interruptionFilter; this.enabled = enabled; this.mZenPolicy = policy; } /** * @hide */ public AutomaticZenRule(String name, ComponentName owner, ComponentName configurationActivity, Uri conditionId, ZenPolicy policy, int interruptionFilter, boolean enabled,

[CVE-2022-20492_1.diff] AutomaticZenRule.java #2
+ * The maximum string length for any string contained in this automatic zen rule. This pertains + * both to fields in the rule itself (such as its name) and items with sub-fields. + * @hide + */ + public static final int MAX_STRING_LENGTH = 1000; + + /** - this.name = name; - this.owner = owner; - this.configurationActivity = configurationActivity; - this.conditionId = conditionId; + this.name = getTrimmedString(name); + this.owner = getTrimmedComponentName(owner); + this.configurationActivity = getTrimmedComponentName(configurationActivity); + this.conditionId = getTrimmedUri(conditionId);
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/AutomaticZenRule.java
86
87
88
89
90
91
92
93
94
95
* interrupt the user (e.g. via sound &amp; vibration) while this rule * is active. * @param policy The policy defines which notifications are allowed to interrupt the user * while this rule is active. This overrides the global policy while this rule is * action ({@link Condition#STATE_TRUE}). * @param enabled Whether the rule is enabled. */ public AutomaticZenRule(@NonNull String name, @Nullable ComponentName owner, @Nullable ComponentName configurationActivity, @NonNull Uri conditionId, @Nullable ZenPolicy policy, int interruptionFilter, boolean enabled) {
+ show +
96
97
98
99
this.name = name; this.owner = owner; this.configurationActivity = configurationActivity; this.conditionId = conditionId;
+ show +
100
101
102
103
104
105
106
107
108
109
this.interruptionFilter = interruptionFilter; this.enabled = enabled; this.mZenPolicy = policy; } /** * @hide */ public AutomaticZenRule(String name, ComponentName owner, ComponentName configurationActivity, Uri conditionId, ZenPolicy policy, int interruptionFilter, boolean enabled,

[CVE-2022-20489_1.diff] AutomaticZenRule.java #2
+ * The maximum string length for any string contained in this automatic zen rule. This pertains + * both to fields in the rule itself (such as its name) and items with sub-fields. + * @hide + */ + public static final int MAX_STRING_LENGTH = 1000; + + /** - this.name = name; - this.owner = owner; - this.configurationActivity = configurationActivity; - this.conditionId = conditionId; + this.name = getTrimmedString(name); + this.owner = getTrimmedComponentName(owner); + this.configurationActivity = getTrimmedComponentName(configurationActivity); + this.conditionId = getTrimmedUri(conditionId);
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/app/AutomaticZenRule.java
86
87
88
89
90
91
92
93
94
95
* interrupt the user (e.g. via sound &amp; vibration) while this rule * is active. * @param policy The policy defines which notifications are allowed to interrupt the user * while this rule is active. This overrides the global policy while this rule is * action ({@link Condition#STATE_TRUE}). * @param enabled Whether the rule is enabled. */ public AutomaticZenRule(@NonNull String name, @Nullable ComponentName owner, @Nullable ComponentName configurationActivity, @NonNull Uri conditionId, @Nullable ZenPolicy policy, int interruptionFilter, boolean enabled) {
+ show +
96
97
98
99
this.name = name; this.owner = owner; this.configurationActivity = configurationActivity; this.conditionId = conditionId;
+ show +
100
101
102
103
104
105
106
107
108
109
this.interruptionFilter = interruptionFilter; this.enabled = enabled; this.mZenPolicy = policy; } /** * @hide */ public AutomaticZenRule(String name, ComponentName owner, ComponentName configurationActivity, Uri conditionId, ZenPolicy policy, int interruptionFilter, boolean enabled,

[CVE-2023-40121_1.diff] DatabaseUtils.java #1
- if (sqlString.indexOf('\'') != -1) { - int length = sqlString.length(); - for (int i = 0; i < length; i++) { - char c = sqlString.charAt(i); - if (c == '\'') { - sb.append('\''); + int length = sqlString.length(); + for (int i = 0; i < length; i++) { + char c = sqlString.charAt(i); + if (Character.isHighSurrogate(c)) { + if (i == length - 1) { + continue; - sb.append(c); + if (Character.isLowSurrogate(sqlString.charAt(i + 1))) { + // add them both + sb.append(c); + sb.append(sqlString.charAt(i + 1)); + continue; + } else { + // this is a lone surrogate, skip it + continue; + } - } else - sb.append(sqlString); + if (Character.isLowSurrogate(c)) { + continue; + } + if (c == '\'') { + sb.append('\''); + } + sb.append(c); + }
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/database/DatabaseUtils.java
504
505
506
507
508
509
510
511
512
513
* internal bindings. In that case, it may be necessary to * construct a WHERE clause manually. This method is useful for * those cases. * * @param sb the StringBuilder that the SQL string will be appended to * @param sqlString the raw string to be appended, which may contain single * quotes */ public static void appendEscapedSQLString(StringBuilder sb, String sqlString) { sb.append('\'');
+ show +
514
515
516
517
518
519
520
521
522
523
524
if (sqlString.indexOf('\'') != -1) { int length = sqlString.length(); for (int i = 0; i < length; i++) { char c = sqlString.charAt(i); if (c == '\'') { sb.append('\''); } sb.append(c); } } else sb.append(sqlString);
+ show +
525
526
527
528
529
530
531
532
533
534
sb.append('\''); } /** * SQL-escape a string. */ public static String sqlEscapeString(String value) { StringBuilder escaper = new StringBuilder(); DatabaseUtils.appendEscapedSQLString(escaper, value);

[CVE-2023-21104_1.diff] TaskFragmentOrganizer.java #1
- // Suppress the lint because it is not a registration method. - @SuppressWarnings("ExecutorRegistration") - @Override - public int applySyncTransaction(@NonNull WindowContainerTransaction t, - @NonNull WindowContainerTransactionCallback callback) { - t.setTaskFragmentOrganizer(mInterface); - return super.applySyncTransaction(t, callback); - } -
/media/esteban/ACOS/dotOS/frameworks/base/core/java/android/window/TaskFragmentOrganizer.java
151
152
153
154
155
156
157
158
159
160
public void onTaskFragmentError( @NonNull IBinder errorCallbackToken, @NonNull Throwable exception) {} @Override public void applyTransaction(@NonNull WindowContainerTransaction t) { t.setTaskFragmentOrganizer(mInterface); super.applyTransaction(t); } // Suppress the lint because it is not a registration method.
+ show +
161
162
163
164
165
166
@SuppressWarnings("ExecutorRegistration") @Override public int applySyncTransaction(@NonNull WindowContainerTransaction t, @NonNull WindowContainerTransactionCallback callback) { t.setTaskFragmentOrganizer(mInterface); return super.applySyncTransaction(t, callback);
+ show +
167
168
169
170
171
172
173
174
175
176
} private final ITaskFragmentOrganizer mInterface = new ITaskFragmentOrganizer.Stub() { @Override public void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo) { mExecutor.execute( () -> TaskFragmentOrganizer.this.onTaskFragmentAppeared(taskFragmentInfo)); } @Override

[CVE-2021-0443_1.diff] ScreenshotHelper.java #4
- if (mScreenshotConnection != null) { - mContext.unbindService(mScreenshotConnection); - mScreenshotConnection = null; - mScreenshotService = null; - } + resetConnection();
/media/esteban/ACOS/dotOS/frameworks/base/core/java/com/android/internal/util/ScreenshotHelper.java
395
396
397
398
399
400
401
402
403
404
handler.postDelayed(mScreenshotTimeout, timeoutMs); } } } } /** * Unbinds the current screenshot connection (if any). */ private void resetConnection() {
+ show +
405
406
407
408
if (mScreenshotConnection != null) { mContext.unbindService(mScreenshotConnection); mScreenshotConnection = null; mScreenshotService = null;
+ show +
409
410
411
412
413
414
415
416
417
418
} } /** * Notifies the screenshot service to show an error. */ private void notifyScreenshotError() { // If the service process is killed, then ask it to clean up after itself final ComponentName errorComponent = ComponentName.unflattenFromString( mContext.getResources().getString(

[CVE-2022-20543_1.diff] WindowManagerService.java #2
+import static android.view.WindowManager.fixScale; - mTransitionAnimationScaleSetting = Settings.Global.getFloat(resolver, - Settings.Global.TRANSITION_ANIMATION_SCALE, - context.getResources().getFloat( - R.dimen.config_appTransitionAnimationDurationScaleDefault)); + mTransitionAnimationScaleSetting = getTransitionAnimationScaleSetting();
/media/esteban/ACOS/dotOS/frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
124
125
126
127
128
129
130
131
132
133
mAnimExecutor = animExecutor; mPlayerImpl = new TransitionPlayerImpl(); // The very last handler (0 in the list) should be the default one. mHandlers.add(new DefaultTransitionHandler(displayController, pool, context, mainExecutor, animExecutor)); // Next lowest priority is remote transitions. mRemoteTransitionHandler = new RemoteTransitionHandler(mainExecutor); mHandlers.add(mRemoteTransitionHandler); ContentResolver resolver = context.getContentResolver();
+ show +
134
135
136
137
mTransitionAnimationScaleSetting = Settings.Global.getFloat(resolver, Settings.Global.TRANSITION_ANIMATION_SCALE, context.getResources().getFloat( R.dimen.config_appTransitionAnimationDurationScaleDefault));
+ show +
138
139
140
141
142
143
144
145
146
147
dispatchAnimScaleSetting(mTransitionAnimationScaleSetting); resolver.registerContentObserver( Settings.Global.getUriFor(Settings.Global.TRANSITION_ANIMATION_SCALE), false, new SettingsObserver()); } private Transitions() { mOrganizer = null; mContext = null;
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
final boolean suspended = Intent.ACTION_PACKAGES_SUSPENDED.equals(intent.getAction()); updateHiddenWhileSuspendedState(new ArraySet<>(Arrays.asList(affectedPackages)), suspended); } }, UserHandle.ALL, suspendPackagesFilter, null, null); // Get persisted window scale setting mWindowAnimationScaleSetting = Settings.Global.getFloat(resolver, Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting);
+ show +
1352
1353
1354
1355
mTransitionAnimationScaleSetting = Settings.Global.getFloat(resolver, Settings.Global.TRANSITION_ANIMATION_SCALE, context.getResources().getFloat( R.dimen.config_appTransitionAnimationDurationScaleDefault));
+ show +
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
setAnimatorDurationScale(Settings.Global.getFloat(resolver, Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting)); mForceDesktopModeOnExternalDisplays = Settings.Global.getInt(resolver, DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, 0) != 0; final String displaySettingsPath = Settings.Global.getString(resolver, DEVELOPMENT_WM_DISPLAY_SETTINGS_PATH); mDisplayWindowSettingsProvider = displayWindowSettingsProvider;

[CVE-2023-20916_1.diff] DragLayout.java #4
- List<ActivityManager.RunningTaskInfo> tasks = null; - // Figure out the splashscreen info for the existing task. - try { - tasks = ActivityTaskManager.getService().getTasks(1, - false /* filterOnlyVisibleRecents */, - false /* keepIntentExtra */); - } catch (RemoteException e) { - // don't show an icon / will just use the defaults - } - if (tasks != null && !tasks.isEmpty()) { - ActivityManager.RunningTaskInfo taskInfo1 = tasks.get(0); + ActivityManager.RunningTaskInfo taskInfo1 = mPolicy.getLatestRunningTask(); + if (taskInfo1 != null) {
/media/esteban/ACOS/dotOS/frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
164
165
166
167
168
169
170
171
172
173
public void prepare(DisplayLayout displayLayout, ClipData initialData, InstanceId loggerSessionId) { mPolicy.start(displayLayout, initialData, loggerSessionId); mHasDropped = false; mCurrentTarget = null; boolean alreadyInSplit = mSplitScreenController != null && mSplitScreenController.isSplitScreenVisible(); if (!alreadyInSplit) {
+ show +
174
175
176
177
178
179
180
181
182
183
184
List<ActivityManager.RunningTaskInfo> tasks = null; // Figure out the splashscreen info for the existing task. try { tasks = ActivityTaskManager.getService().getTasks(1, false /* filterOnlyVisibleRecents */, false /* keepIntentExtra */); } catch (RemoteException e) { // don't show an icon / will just use the defaults } if (tasks != null && !tasks.isEmpty()) { ActivityManager.RunningTaskInfo taskInfo1 = tasks.get(0);
+ show +
185
186
187
188
189
190
191
192
193
194
Drawable icon1 = mIconProvider.getIcon(taskInfo1.topActivityInfo); int bgColor1 = getResizingBackgroundColor(taskInfo1); mDropZoneView1.setAppInfo(bgColor1, icon1); mDropZoneView2.setAppInfo(bgColor1, icon1); updateDropZoneSizes(null, null); // passing null splits the views evenly } } else { // We're already in split so get taskInfo from the controller to populate icon / color. ActivityManager.RunningTaskInfo topOrLeftTask = mSplitScreenController.getTaskInfo(SPLIT_POSITION_TOP_OR_LEFT);

[CVE-2023-40123_1.diff] PipMenuView.java #2
+import android.graphics.drawable.Icon; - // TODO: Check if the action drawable has changed before we reload it - action.getIcon().loadDrawableAsync(mContext, d -> { - if (d != null) { - d.setTint(Color.WHITE); - actionView.setImageDrawable(d); - } - }, mMainHandler); + final int iconType = action.getIcon().getType(); + if (iconType == Icon.TYPE_URI || iconType == Icon.TYPE_URI_ADAPTIVE_BITMAP) { + // Disallow loading icon from content URI + actionView.setImageDrawable(null); + } else { + // TODO: Check if the action drawable has changed before we reload it + action.getIcon().loadDrawableAsync(mContext, d -> { + if (d != null) { + d.setTint(Color.WHITE); + actionView.setImageDrawable(d); + } + }, mMainHandler); + }
/media/esteban/ACOS/dotOS/frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java
482
483
484
485
486
487
488
489
490
491
// Recreate the layout final boolean isLandscapePip = stackBounds != null && (stackBounds.width() > stackBounds.height()); for (int i = 0; i < mActions.size(); i++) { final RemoteAction action = mActions.get(i); final PipMenuActionView actionView = (PipMenuActionView) mActionsGroup.getChildAt(i); // TODO: Check if the action drawable has changed before we reload it
+ show +
492
493
494
495
496
497
action.getIcon().loadDrawableAsync(mContext, d -> { if (d != null) { d.setTint(Color.WHITE); actionView.setImageDrawable(d); } }, mMainHandler);
+ show +
498
499
500
501
502
503
504
505
506
507
actionView.setContentDescription(action.getContentDescription()); if (action.isEnabled()) { actionView.setOnClickListener(v -> { try { action.getActionIntent().send(); } catch (CanceledException e) { Log.w(TAG, "Failed to send action", e); } }); }

[CVE-2023-40103_1.diff] AssetManager2.cpp #1
+ -AssetManager2::AssetManager2() { - memset(&configuration_, 0, sizeof(configuration_)); +AssetManager2::AssetManager2(ApkAssetsList apk_assets, const ResTable_config& configuration) + : configuration_(configuration) { + // Don't invalidate caches here as there's nothing cached yet. + SetApkAssets(apk_assets, false); -bool AssetManager2::SetApkAssets(std::vector<const ApkAssets*> apk_assets, bool invalidate_caches) { - apk_assets_ = std::move(apk_assets); - BuildDynamicRefTable(); +bool AssetManager2::SetApkAssets(ApkAssetsList apk_assets, bool invalidate_caches) { + BuildDynamicRefTable(apk_assets);
/media/esteban/ACOS/dotOS/frameworks/base/libs/androidfw/AssetManager2.cpp
91
92
93
94
95
96
97
98
99
100
// The string pool reference to the type's name. This uses a different string pool than // the global string pool, but this is hidden from the caller. StringPoolRef type_string_ref; // The string pool reference to the entry's name. This uses a different string pool than // the global string pool, but this is hidden from the caller. StringPoolRef entry_string_ref; };
+ show +
101
102
103
104
105
106
107
AssetManager2::AssetManager2() { memset(&configuration_, 0, sizeof(configuration_)); } bool AssetManager2::SetApkAssets(std::vector<const ApkAssets*> apk_assets, bool invalidate_caches) { apk_assets_ = std::move(apk_assets); BuildDynamicRefTable();
+ show +
108
109
110
111
112
113
114
115
116
117
RebuildFilterList(); if (invalidate_caches) { InvalidateCaches(static_cast<uint32_t>(-1)); } return true; } void AssetManager2::BuildDynamicRefTable() { package_groups_.clear(); package_ids_.fill(0xff);

[CVE-2023-40103_1.diff] ApkAssets.cpp #3
-std::unique_ptr<ApkAssets> ApkAssets::LoadImpl(std::unique_ptr<AssetsProvider> assets, - package_property_t property_flags, - std::unique_ptr<Asset> idmap_asset, - std::unique_ptr<LoadedIdmap> loaded_idmap) { +ApkAssetsPtr ApkAssets::LoadImpl(std::unique_ptr<AssetsProvider> assets, + package_property_t property_flags, + std::unique_ptr<Asset> idmap_asset, + std::unique_ptr<LoadedIdmap> loaded_idmap) {
/media/esteban/ACOS/dotOS/frameworks/base/libs/androidfw/ApkAssets.cpp
94
95
96
97
98
99
100
101
102
103
overlay_assets = ZipAssetsProvider::Create(overlay_path, flags); } if (overlay_assets == nullptr) { return {}; } return LoadImpl(std::move(overlay_assets), flags | PROPERTY_OVERLAY, std::move(idmap_asset), std::move(loaded_idmap)); }
+ show +
104
105
106
107
std::unique_ptr<ApkAssets> ApkAssets::LoadImpl(std::unique_ptr<AssetsProvider> assets, package_property_t property_flags, std::unique_ptr<Asset> idmap_asset, std::unique_ptr<LoadedIdmap> loaded_idmap) {
+ show +
108
109
110
111
112
113
114
115
116
117
if (assets == nullptr) { return {}; } // Open the resource table via mmap unless it is compressed. This logic is taken care of by Open. bool resources_asset_exists = false; auto resources_asset = assets->Open(kResourcesArsc, Asset::AccessMode::ACCESS_BUFFER, &resources_asset_exists); if (resources_asset == nullptr && resources_asset_exists) { LOG(ERROR) << "Failed to open '" << kResourcesArsc << "' in APK '" << assets->GetDebugName()

[CVE-2023-40103_1.diff] ApkAssets.cpp #4
-std::unique_ptr<ApkAssets> ApkAssets::LoadImpl(std::unique_ptr<Asset> resources_asset, - std::unique_ptr<AssetsProvider> assets, - package_property_t property_flags, - std::unique_ptr<Asset> idmap_asset, - std::unique_ptr<LoadedIdmap> loaded_idmap) { +ApkAssetsPtr ApkAssets::LoadImpl(std::unique_ptr<Asset> resources_asset, + std::unique_ptr<AssetsProvider> assets, + package_property_t property_flags, + std::unique_ptr<Asset> idmap_asset, + std::unique_ptr<LoadedIdmap> loaded_idmap) {
/media/esteban/ACOS/dotOS/frameworks/base/libs/androidfw/ApkAssets.cpp
116
117
118
119
120
121
122
123
124
125
if (resources_asset == nullptr && resources_asset_exists) { LOG(ERROR) << "Failed to open '" << kResourcesArsc << "' in APK '" << assets->GetDebugName() << "'."; return {}; } return LoadImpl(std::move(resources_asset), std::move(assets), property_flags, std::move(idmap_asset), std::move(loaded_idmap)); }
+ show +
126
127
128
129
130
std::unique_ptr<ApkAssets> ApkAssets::LoadImpl(std::unique_ptr<Asset> resources_asset, std::unique_ptr<AssetsProvider> assets, package_property_t property_flags, std::unique_ptr<Asset> idmap_asset, std::unique_ptr<LoadedIdmap> loaded_idmap) {
+ show +
131
132
133
134
135
136
137
138
139
140
if (assets == nullptr ) { return {}; } std::unique_ptr<LoadedArsc> loaded_arsc; if (resources_asset != nullptr) { const auto data = resources_asset->getIncFsBuffer(true /* aligned */); const size_t length = resources_asset->getLength(); if (!data || length == 0) { LOG(ERROR) << "Failed to read resources table in APK '" << assets->GetDebugName() << "'.";

[CVE-2023-40103_1.diff] ApkAssets.cpp #5
- return std::unique_ptr<ApkAssets>(new ApkAssets(std::move(resources_asset), - std::move(loaded_arsc), std::move(assets), - property_flags, std::move(idmap_asset), - std::move(loaded_idmap))); + return ApkAssetsPtr::make(PrivateConstructorUtil{}, std::move(resources_asset), + std::move(loaded_arsc), std::move(assets), property_flags, + std::move(idmap_asset), std::move(loaded_idmap));
/media/esteban/ACOS/dotOS/frameworks/base/libs/androidfw/ApkAssets.cpp
143
144
145
146
147
148
149
150
151
152
loaded_arsc = LoadedArsc::Load(data, length, loaded_idmap.get(), property_flags); } else { loaded_arsc = LoadedArsc::CreateEmpty(); } if (loaded_arsc == nullptr) { LOG(ERROR) << "Failed to load resources table in APK '" << assets->GetDebugName() << "'."; return {}; }
+ show +
153
154
155
156
return std::unique_ptr<ApkAssets>(new ApkAssets(std::move(resources_asset), std::move(loaded_arsc), std::move(assets), property_flags, std::move(idmap_asset), std::move(loaded_idmap)));
+ show +
157
158
159
160
161
162
163
164
165
166
} std::optional<std::string_view> ApkAssets::GetPath() const { return assets_provider_->GetPath(); } const std::string& ApkAssets::GetDebugName() const { return assets_provider_->GetDebugName(); }

[CVE-2023-40103_1.diff] AssetManager2_test.cpp #1
- std::unique_ptr<const ApkAssets> basic_assets_; - std::unique_ptr<const ApkAssets> basic_de_fr_assets_; - std::unique_ptr<const ApkAssets> basic_xhdpi_assets_; - std::unique_ptr<const ApkAssets> basic_xxhdpi_assets_; - std::unique_ptr<const ApkAssets> style_assets_; - std::unique_ptr<const ApkAssets> lib_one_assets_; - std::unique_ptr<const ApkAssets> lib_two_assets_; - std::unique_ptr<const ApkAssets> libclient_assets_; - std::unique_ptr<const ApkAssets> appaslib_assets_; - std::unique_ptr<const ApkAssets> system_assets_; - std::unique_ptr<const ApkAssets> app_assets_; - std::unique_ptr<const ApkAssets> overlay_assets_; - std::unique_ptr<const ApkAssets> overlayable_assets_; + AssetManager2::ApkAssetsPtr basic_assets_; + AssetManager2::ApkAssetsPtr basic_de_fr_assets_; + AssetManager2::ApkAssetsPtr basic_xhdpi_assets_; + AssetManager2::ApkAssetsPtr basic_xxhdpi_assets_; + AssetManager2::ApkAssetsPtr style_assets_; + AssetManager2::ApkAssetsPtr lib_one_assets_; + AssetManager2::ApkAssetsPtr lib_two_assets_; + AssetManager2::ApkAssetsPtr libclient_assets_; + AssetManager2::ApkAssetsPtr appaslib_assets_; + AssetManager2::ApkAssetsPtr system_assets_; + AssetManager2::ApkAssetsPtr app_assets_; + AssetManager2::ApkAssetsPtr overlay_assets_; + AssetManager2::ApkAssetsPtr overlayable_assets_;
/media/esteban/ACOS/dotOS/frameworks/base/libs/androidfw/tests/AssetManager2_test.cpp
84
85
86
87
88
89
90
91
92
93
overlay_assets_ = ApkAssets::LoadOverlay("overlay/overlay.idmap"); ASSERT_NE(nullptr, overlay_assets_); overlayable_assets_ = ApkAssets::Load("overlayable/overlayable.apk"); ASSERT_THAT(overlayable_assets_, NotNull()); chdir(original_path.c_str()); } protected:
+ show +
94
95
96
97
98
99
100
101
102
103
104
105
106
std::unique_ptr<const ApkAssets> basic_assets_; std::unique_ptr<const ApkAssets> basic_de_fr_assets_; std::unique_ptr<const ApkAssets> basic_xhdpi_assets_; std::unique_ptr<const ApkAssets> basic_xxhdpi_assets_; std::unique_ptr<const ApkAssets> style_assets_; std::unique_ptr<const ApkAssets> lib_one_assets_; std::unique_ptr<const ApkAssets> lib_two_assets_; std::unique_ptr<const ApkAssets> libclient_assets_; std::unique_ptr<const ApkAssets> appaslib_assets_; std::unique_ptr<const ApkAssets> system_assets_; std::unique_ptr<const ApkAssets> app_assets_; std::unique_ptr<const ApkAssets> overlay_assets_; std::unique_ptr<const ApkAssets> overlayable_assets_;
+ show +
107
108
109
110
111
112
113
114
115
116
}; TEST_F(AssetManager2Test, FindsResourceFromSingleApkAssets) { ResTable_config desired_config; memset(&desired_config, 0, sizeof(desired_config)); desired_config.language[0] = 'd'; desired_config.language[1] = 'e'; AssetManager2 assetmanager; assetmanager.SetConfiguration(desired_config);

[CVE-2023-40103_1.diff] ApkAssets.h #3
- static std::unique_ptr<ApkAssets> LoadImpl(std::unique_ptr<AssetsProvider> assets, - package_property_t property_flags, - std::unique_ptr<Asset> idmap_asset, - std::unique_ptr<LoadedIdmap> loaded_idmap); + static ApkAssetsPtr LoadImpl(std::unique_ptr<AssetsProvider> assets, + package_property_t property_flags, + std::unique_ptr<Asset> idmap_asset, + std::unique_ptr<LoadedIdmap> loaded_idmap); - static std::unique_ptr<ApkAssets> LoadImpl(std::unique_ptr<Asset> resources_asset, - std::unique_ptr<AssetsProvider> assets, - package_property_t property_flags, - std::unique_ptr<Asset> idmap_asset, - std::unique_ptr<LoadedIdmap> loaded_idmap); + static ApkAssetsPtr LoadImpl(std::unique_ptr<Asset> resources_asset, + std::unique_ptr<AssetsProvider> assets, + package_property_t property_flags, + std::unique_ptr<Asset> idmap_asset, + std::unique_ptr<LoadedIdmap> loaded_idmap); - ApkAssets(std::unique_ptr<Asset> resources_asset, - std::unique_ptr<LoadedArsc> loaded_arsc, - std::unique_ptr<AssetsProvider> assets, - package_property_t property_flags, - std::unique_ptr<Asset> idmap_asset, + // Allows us to make it possible to call make_shared from inside the class but still keeps the + // ctor 'private' for all means and purposes. + struct PrivateConstructorUtil { + explicit PrivateConstructorUtil() = default; + }; + + public: + ApkAssets(PrivateConstructorUtil, std::unique_ptr<Asset> resources_asset, + std::unique_ptr<LoadedArsc> loaded_arsc, std::unique_ptr<AssetsProvider> assets, + package_property_t property_flags, std::unique_ptr<Asset> idmap_asset,
/media/esteban/ACOS/dotOS/frameworks/base/libs/androidfw/include/androidfw/ApkAssets.h
88
89
90
91
92
93
94
95
96
97
} // Returns whether the resources.arsc is allocated in RAM (not mmapped). bool IsTableAllocated() const { return resources_asset_ != nullptr && resources_asset_->isAllocated(); } bool IsUpToDate() const; private:
+ show +
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
static std::unique_ptr<ApkAssets> LoadImpl(std::unique_ptr<AssetsProvider> assets, package_property_t property_flags, std::unique_ptr<Asset> idmap_asset, std::unique_ptr<LoadedIdmap> loaded_idmap); static std::unique_ptr<ApkAssets> LoadImpl(std::unique_ptr<Asset> resources_asset, std::unique_ptr<AssetsProvider> assets, package_property_t property_flags, std::unique_ptr<Asset> idmap_asset, std::unique_ptr<LoadedIdmap> loaded_idmap); ApkAssets(std::unique_ptr<Asset> resources_asset, std::unique_ptr<LoadedArsc> loaded_arsc, std::unique_ptr<AssetsProvider> assets, package_property_t property_flags, std::unique_ptr<Asset> idmap_asset,
+ show +
114
115
116
117
118
119
120
121
122
123
std::unique_ptr<LoadedIdmap> loaded_idmap); std::unique_ptr<Asset> resources_asset_; std::unique_ptr<LoadedArsc> loaded_arsc_; std::unique_ptr<AssetsProvider> assets_provider_; package_property_t property_flags_ = 0U; std::unique_ptr<Asset> idmap_asset_; std::unique_ptr<LoadedIdmap> loaded_idmap_;

[CVE-2024-31312_1.diff] KeyguardMediaControllerTest.kt #4
- fun testHiddenOnKeyguard_whenNotificationsAreHidden() { - whenever(notificationLockscreenUserManager.shouldShowLockscreenNotifications()) - .thenReturn(false) - - keyguardMediaController.refreshMediaPosition() - - assertThat(mediaHeaderView.visibility).isEqualTo(GONE) - } - - @Test
/media/esteban/ACOS/dotOS/frameworks/base/packages/SystemUI/tests/src/com/android/systemui/media/KeyguardMediaControllerTest.kt
99
100
101
102
103
104
105
106
107
108
testStateVisibility(StatusBarState.KEYGUARD, VISIBLE) } private fun testStateVisibility(state: Int, visibility: Int) { whenever(statusBarStateController.state).thenReturn(state) keyguardMediaController.refreshMediaPosition() assertThat(mediaHeaderView.visibility).isEqualTo(visibility) } @Test
+ show +
109
110
111
112
113
114
115
116
117
118
fun testHiddenOnKeyguard_whenNotificationsAreHidden() { whenever(notificationLockscreenUserManager.shouldShowLockscreenNotifications()) .thenReturn(false) keyguardMediaController.refreshMediaPosition() assertThat(mediaHeaderView.visibility).isEqualTo(GONE) } @Test
+ show +
119
120
121
122
123
124
125
126
127
128
fun testActivatesSplitShadeContainerInSplitShadeMode() { val splitShadeContainer = FrameLayout(context) keyguardMediaController.attachSplitShadeContainer(splitShadeContainer) keyguardMediaController.useSplitShade = true assertThat(splitShadeContainer.visibility).isEqualTo(VISIBLE) } @Test fun testActivatesSinglePaneContainerInSinglePaneMode() {

[CVE-2020-27059_1.diff] AuthControllerTest.java #1
+ + if (!promptInfo.isAllowBackgroundAuthentication()) { + mHandler.post(this::cancelIfOwnerIsNotInForeground); + } + public void testClientNotified_whenTaskStackChangesDuringShow() throws Exception { + switchTask("other_package"); + showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */); + + mTestableLooper.processAllMessages(); + + assertNull(mAuthController.mCurrentDialog); + assertNull(mAuthController.mReceiver); + verify(mDialog1).dismissWithoutCallback(true /* animate */); + verify(mReceiver).onDialogDismissed( + eq(BiometricPrompt.DISMISSED_REASON_USER_CANCEL), + eq(null) /* credentialAttestation */); + } + + @Test - List<ActivityManager.RunningTaskInfo> tasks = new ArrayList<>(); - ActivityManager.RunningTaskInfo taskInfo = mock(ActivityManager.RunningTaskInfo.class); - taskInfo.topActivity = mock(ComponentName.class); - when(taskInfo.topActivity.getPackageName()).thenReturn("other_package"); - tasks.add(taskInfo); - when(mActivityTaskManager.getTasks(anyInt())).thenReturn(tasks); + switchTask("other_package");
/media/esteban/ACOS/dotOS/frameworks/base/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java
551
552
553
554
555
556
557
558
559
560
ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class); verify(mDialog2).show(any(), captor.capture()); assertEquals(Authenticators.DEVICE_CREDENTIAL, mAuthController.mLastBiometricPromptInfo.getAuthenticators()); } @Test public void testClientNotified_whenTaskStackChangesDuringAuthentication() throws Exception { showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
+ show +
561
562
563
564
565
566
List<ActivityManager.RunningTaskInfo> tasks = new ArrayList<>(); ActivityManager.RunningTaskInfo taskInfo = mock(ActivityManager.RunningTaskInfo.class); taskInfo.topActivity = mock(ComponentName.class); when(taskInfo.topActivity.getPackageName()).thenReturn("other_package"); tasks.add(taskInfo); when(mActivityTaskManager.getTasks(anyInt())).thenReturn(tasks);
+ show +
567
568
569
570
571
572
573
574
575
576
mAuthController.mTaskStackListener.onTaskStackChanged(); mTestableLooper.processAllMessages(); assertNull(mAuthController.mCurrentDialog); assertNull(mAuthController.mReceiver); verify(mDialog1).dismissWithoutCallback(true /* animate */); verify(mReceiver).onDialogDismissed( eq(BiometricPrompt.DISMISSED_REASON_USER_CANCEL), eq(null) /* credentialAttestation */);

[CVE-2022-20415_1.diff] NotificationInterruptStateProviderImpl.java #2
- boolean isDreaming = false; - try { - isDreaming = mDreamManager.isDreaming(); - } catch (RemoteException e) { - Log.e(TAG, "Failed to query dream manager.", e); - } - boolean inUse = mPowerManager.isScreenOn() && !isDreaming; + boolean inUse = mPowerManager.isScreenOn() && !isDreaming();
/media/esteban/ACOS/dotOS/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java
242
243
244
245
246
247
248
249
250
251
return false; } if (entry.getImportance() < NotificationManager.IMPORTANCE_HIGH) { if (DEBUG_HEADS_UP) { Log.d(TAG, "No heads up: unimportant notification: " + sbn.getKey()); } return false; }
+ show +
252
253
254
255
256
257
258
boolean isDreaming = false; try { isDreaming = mDreamManager.isDreaming(); } catch (RemoteException e) { Log.e(TAG, "Failed to query dream manager.", e); } boolean inUse = mPowerManager.isScreenOn() && !isDreaming;
+ show +
259
260
261
262
263
264
265
266
267
268
if (!inUse) { if (DEBUG_HEADS_UP) { Log.d(TAG, "No heads up: not in use: " + sbn.getKey()); } return false; } for (int i = 0; i < mSuppressors.size(); i++) { if (mSuppressors.get(i).suppressAwakeHeadsUp(entry)) {

[CVE-2022-20115_1.diff] TelephonyRegistry.java #1
+ - // for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding - // either READ_PRIV or READ_PHONE get this broadcast exactly once. - mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE); - mContext.createContextAsUser(UserHandle.ALL, 0) - .sendBroadcastMultiplePermissions(intent, - new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE }, - new String[] { Manifest.permission.READ_PHONE_STATE }); + // for all apps with READ_PRIVILEGED_PHONE_STATE but not READ_PHONE_STATE. + // Do this again twice, the first time for apps with ACCESS_FINE_LOCATION, then again with + // the location-sanitized service state for all apps without ACCESS_FINE_LOCATION. + // This ensures that any app holding either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE + // get this broadcast exactly once, and we are not exposing location without permission. + mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent, + new String[] {Manifest.permission.READ_PHONE_STATE, + Manifest.permission.ACCESS_FINE_LOCATION}); + mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent, + new String[] {Manifest.permission.READ_PRIVILEGED_PHONE_STATE, + Manifest.permission.ACCESS_FINE_LOCATION}, + new String[] {Manifest.permission.READ_PHONE_STATE}); + + // Replace bundle with location-sanitized ServiceState + data = new Bundle(); + state.createLocationInfoSanitizedCopy(true).fillInNotifierBundle(data); + intent.putExtras(data); + mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent, + new String[] {Manifest.permission.READ_PHONE_STATE}, + new String[] {Manifest.permission.ACCESS_FINE_LOCATION}); + mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent, + new String[] {Manifest.permission.READ_PRIVILEGED_PHONE_STATE}, + new String[] {Manifest.permission.READ_PHONE_STATE, + Manifest.permission.ACCESS_FINE_LOCATION});
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/TelephonyRegistry.java
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
intent.putExtra(PHONE_CONSTANTS_STATE_KEY, TelephonyUtils.dataStateToString(pdcs.getState())); intent.putExtra(PHONE_CONSTANTS_DATA_APN_KEY, pdcs.getApnSetting().getApnName()); intent.putExtra(PHONE_CONSTANTS_DATA_APN_TYPE_KEY, getApnTypesStringFromBitmask(pdcs.getApnSetting().getApnTypeBitmask())); intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, slotIndex); intent.putExtra(PHONE_CONSTANTS_SUBSCRIPTION_KEY, subId); // Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again // for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding // either READ_PRIV or READ_PHONE get this broadcast exactly once.
+ show +
3105
3106
3107
3108
3109
mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE); mContext.createContextAsUser(UserHandle.ALL, 0) .sendBroadcastMultiplePermissions(intent, new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE }, new String[] { Manifest.permission.READ_PHONE_STATE });
+ show +
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
} /** * Reimplementation of {@link ApnSetting#getApnTypesStringFromBitmask}. */ @VisibleForTesting public static String getApnTypesStringFromBitmask(int apnTypeBitmask) { List<String> types = new ArrayList<>(); int remainingApnTypes = apnTypeBitmask; // special case for DEFAULT since it's not a pure bit

[CVE-2021-0694_1.diff] ActiveServices.java #2
+ String.format("0x%08X", manifestType) + " in service element of manifest file"); - // If the foreground service is not started from TOP process, do not allow it to - // have while-in-use location/camera/microphone access. - if (!r.mAllowWhileInUsePermissionInFgs) { - Slog.w(TAG, - "Foreground service started from background can not have " - + "location/camera/microphone access: service " - + r.shortInstanceName); - }
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
// started. Check for app state again. final long delayMs = SystemClock.elapsedRealtime() - r.mLastSetFgsRestrictionTime; if (delayMs > mAm.mConstants.mFgsStartForegroundTimeoutMs) { setFgsRestrictionLocked(r.serviceInfo.packageName, r.app.getPid(), r.appInfo.uid, r.intent.getIntent(), r, r.userId,false); } } // If the foreground service is not started from TOP process, do not allow it to // have while-in-use location/camera/microphone access.
+ show +
1818
1819
1820
1821
1822
if (!r.mAllowWhileInUsePermissionInFgs) { Slog.w(TAG, "Foreground service started from background can not have " + "location/camera/microphone access: service " + r.shortInstanceName);
+ show +
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
} logFgsBackgroundStart(r); if (r.mAllowStartForeground == REASON_DENIED && isBgFgsRestrictionEnabled(r)) { final String msg = "Service.startForeground() not allowed due to " + "mAllowStartForeground false: service " + r.shortInstanceName; Slog.w(TAG, msg); showFgsBgRestrictedNotificationLocked(r); updateServiceForegroundLocked(psr, true); ignoreForeground = true;

[CVE-2022-20356_1.diff] ActiveServices.java #1
- final boolean isAllowedPackage = - mAllowListWhileInUsePermissionInFgs.contains(callingPackage); - if (isAllowedPackage) { - ret = REASON_ALLOWLISTED_PACKAGE; + if (verifyPackage(callingPackage, callingUid)) { + final boolean isAllowedPackage = + mAllowListWhileInUsePermissionInFgs.contains(callingPackage); + if (isAllowedPackage) { + ret = REASON_ALLOWLISTED_PACKAGE; + } + } else { + EventLog.writeEvent(0x534e4554, "215003903", callingUid, + "callingPackage:" + callingPackage + " does not belong to callingUid:" + + callingUid);
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
} if (ret == REASON_DENIED) { if (mAm.checkPermission(START_ACTIVITIES_FROM_BACKGROUND, callingPid, callingUid) == PERMISSION_GRANTED) { ret = REASON_BACKGROUND_ACTIVITY_PERMISSION; } } if (ret == REASON_DENIED) {
+ show +
6006
6007
6008
6009
final boolean isAllowedPackage = mAllowListWhileInUsePermissionInFgs.contains(callingPackage); if (isAllowedPackage) { ret = REASON_ALLOWLISTED_PACKAGE;
+ show +
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
} } if (ret == REASON_DENIED) { // Is the calling UID a device owner app? final boolean isDeviceOwner = mAm.mInternal.isDeviceOwner(callingUid); if (isDeviceOwner) { ret = REASON_DEVICE_OWNER; } }

[CVE-2024-0036_1.diff] ActivityTaskManagerService.java #2
- Binder.restoreCallingIdentity(origId); - - r.finishing = wasFinishing; - if (res != ActivityManager.START_SUCCESS) { - return false; + r.finishing = wasFinishing; + return res == ActivityManager.START_SUCCESS; + } finally { + Binder.restoreCallingIdentity(origId); - return true;
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
.setResultWho(resultWho) .setRequestCode(requestCode) .setCallingPid(-1) .setCallingUid(r.launchedFromUid) .setCallingPackage(r.launchedFromPackage) .setCallingFeatureId(r.launchedFromFeatureId) .setRealCallingPid(-1) .setRealCallingUid(r.launchedFromUid) .setActivityOptions(options) .execute();
+ show +
1427
1428
1429
1430
1431
1432
1433
Binder.restoreCallingIdentity(origId); r.finishing = wasFinishing; if (res != ActivityManager.START_SUCCESS) { return false; } return true;
+ show +
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
} } private void enforceCallerIsDream(String callerPackageName) { final long origId = Binder.clearCallingIdentity(); try { if (!ActivityRecord.canLaunchDreamActivity(callerPackageName)) { throw new SecurityException("The dream activity can be started only when the device" + " is dreaming and only by the active dream package."); }

[CVE-2022-20543_1.diff] WindowManagerService.java #4
+ private float getTransitionAnimationScaleSetting() { + return fixScale(Settings.Global.getFloat(mContext.getContentResolver(), + Settings.Global.TRANSITION_ANIMATION_SCALE, mContext.getResources().getFloat( + R.dimen.config_appTransitionAnimationDurationScaleDefault))); + } + - static float fixScale(float scale) { - if (scale < 0) scale = 0; - else if (scale > 20) scale = 20; - return Math.abs(scale); - }
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
int callingPid = Binder.getCallingPid(); int callingUid = Binder.getCallingUid(); if (!mAtmInternal.checkCanCloseSystemDialogs(callingPid, callingUid, null)) { return; } synchronized (mGlobalLock) { mRoot.closeSystemDialogs(reason); } }
+ show +
3343
3344
3345
3346
static float fixScale(float scale) { if (scale < 0) scale = 0; else if (scale > 20) scale = 20; return Math.abs(scale);
+ show +
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
} @Override public void setAnimationScale(int which, float scale) { if (!checkCallingPermission(android.Manifest.permission.SET_ANIMATION_SCALE, "setAnimationScale()")) { throw new SecurityException("Requires SET_ANIMATION_SCALE permission"); } scale = fixScale(scale);

[CVE-2022-20543_1.diff] WindowManagerService.java #5
- mTransitionAnimationScaleSetting = Settings.Global.getFloat( - mContext.getContentResolver(), - Settings.Global.TRANSITION_ANIMATION_SCALE, - mTransitionAnimationScaleSetting); + mTransitionAnimationScaleSetting = + getTransitionAnimationScaleSetting();
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
final int mode = msg.arg1; switch (mode) { case WINDOW_ANIMATION_SCALE: { mWindowAnimationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting); break; } case TRANSITION_ANIMATION_SCALE: {
+ show +
5208
5209
5210
5211
mTransitionAnimationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE, mTransitionAnimationScaleSetting);
+ show +
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
break; } case ANIMATION_DURATION_SCALE: { mAnimatorDurationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting); dispatchNewAnimatorScaleLocked(null); break; }

[CVE-2023-21285_1.diff] MediaSessionRecord.java #6
+import android.content.ContentProvider; +import android.content.ContentResolver; +import com.android.server.LocalServices; +import com.android.server.uri.UriGrantsManagerInternal; + + private static final String[] ART_URIS = new String[] { + MediaMetadata.METADATA_KEY_ALBUM_ART_URI, + MediaMetadata.METADATA_KEY_ART_URI, + MediaMetadata.METADATA_KEY_DISPLAY_ICON_URI}; + private final UriGrantsManagerInternal mUgmInternal; + mUgmInternal = LocalServices.getService(UriGrantsManagerInternal.class); - MediaMetadata temp = metadata == null ? null : new MediaMetadata.Builder(metadata) - .build(); - // This is to guarantee that the underlying bundle is unparceled - // before we set it to prevent concurrent reads from throwing an - // exception - if (temp != null) { - temp.size(); - } - mMetadata = temp; + mMetadata = sanitizeMediaMetadata(metadata); + private MediaMetadata sanitizeMediaMetadata(MediaMetadata metadata) { + if (metadata == null) { + return null; + } + MediaMetadata.Builder metadataBuilder = new MediaMetadata.Builder(metadata); + for (String key: ART_URIS) { + String uriString = metadata.getString(key); + if (TextUtils.isEmpty(uriString)) { + continue; + } + Uri uri = Uri.parse(uriString); + if (!ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) { + continue; + } + try { + mUgmInternal.checkGrantUriPermission(getUid(), + getPackageName(), + ContentProvider.getUriWithoutUserId(uri), + Intent.FLAG_GRANT_READ_URI_PERMISSION, + ContentProvider.getUserIdFromUri(uri, getUserId())); + } catch (SecurityException e) { + metadataBuilder.putString(key, null); + } + } + MediaMetadata sanitizedMetadata = metadataBuilder.build(); + // sanitizedMetadata.size() guarantees that the underlying bundle is unparceled + // before we set it to prevent concurrent reads from throwing an + // exception + sanitizedMetadata.size(); + return sanitizedMetadata; + } +
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/media/MediaSessionRecord.java
965
966
967
968
969
970
971
972
973
974
@Override public void setLaunchPendingIntent(PendingIntent pi) throws RemoteException { mLaunchIntent = pi; } @Override public void setMetadata(MediaMetadata metadata, long duration, String metadataDescription) throws RemoteException { synchronized (mLock) {
+ show +
975
976
977
978
979
980
981
982
983
MediaMetadata temp = metadata == null ? null : new MediaMetadata.Builder(metadata) .build(); // This is to guarantee that the underlying bundle is unparceled // before we set it to prevent concurrent reads from throwing an // exception if (temp != null) { temp.size(); } mMetadata = temp;
+ show +
984
985
986
987
988
989
990
991
992
993
mDuration = duration; mMetadataDescription = metadataDescription; } mHandler.post(MessageHandler.MSG_UPDATE_METADATA); } @Override public void setPlaybackState(PlaybackState state) throws RemoteException { int oldState = mPlaybackState == null ? PlaybackState.STATE_NONE : mPlaybackState.getState();

[CVE-2024-34723_1.diff] MediaSessionRecord.java #1
- return new ParcelableListBinder<QueueItem>((list) -> { - synchronized (mLock) { - mQueue = list; - } - mHandler.post(MessageHandler.MSG_UPDATE_QUEUE); - }); + return new ParcelableListBinder<QueueItem>( + QueueItem.class, + (list) -> { + synchronized (mLock) { + mQueue = list; + } + mHandler.post(MessageHandler.MSG_UPDATE_QUEUE); + });
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/media/MediaSessionRecord.java
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
@Override public void resetQueue() throws RemoteException { synchronized (mLock) { mQueue = null; } mHandler.post(MessageHandler.MSG_UPDATE_QUEUE); } @Override public IBinder getBinderForSetQueue() throws RemoteException {
+ show +
1022
1023
1024
1025
1026
1027
return new ParcelableListBinder<QueueItem>((list) -> { synchronized (mLock) { mQueue = list; } mHandler.post(MessageHandler.MSG_UPDATE_QUEUE); });
+ show +
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
} @Override public void setQueueTitle(CharSequence title) throws RemoteException { mQueueTitle = title; mHandler.post(MessageHandler.MSG_UPDATE_QUEUE_TITLE); } @Override public void setExtras(Bundle extras) throws RemoteException {

[CVE-2023-21131_1.diff] AccountManagerService.java #1
- intent.setFlags(intent.getFlags() & ~(Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION - | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION - | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION));
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/accounts/AccountManagerService.java
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
* In particular we want to make sure that the Authenticator doesn't try to trick users * into launching arbitrary intents on the device via by tricking to click authenticator * supplied entries in the system Settings app. */ protected boolean checkKeyIntent(int authUid, Intent intent) { // Explicitly set an empty ClipData to ensure that we don't offer to // promote any Uris contained inside for granting purposes if (intent.getClipData() == null) { intent.setClipData(ClipData.newPlainText(null, null)); }
+ show +
4865
4866
4867
4868
intent.setFlags(intent.getFlags() & ~(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION));
+ show +
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
final long bid = Binder.clearCallingIdentity(); try { PackageManager pm = mContext.getPackageManager(); ResolveInfo resolveInfo = pm.resolveActivityAsUser(intent, 0, mAccounts.userId); if (resolveInfo == null) { return false; } ActivityInfo targetActivityInfo = resolveInfo.activityInfo; int targetUid = targetActivityInfo.applicationInfo.uid; PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class);

[CVE-2024-31315_1.diff] ManagedServices.java #6
+ private void trimApprovedListsForInvalidServices(String packageName, int userId) { + synchronized (mApproved) { + final ArrayMap<Boolean, ArraySet<String>> approvedByType = mApproved.get(userId); + if (approvedByType == null) { + return; + } + for (int i = 0; i < approvedByType.size(); i++) { + final ArraySet<String> approved = approvedByType.valueAt(i); + for (int j = approved.size() - 1; j >= 0; j--) { + final String approvedPackageOrComponent = approved.valueAt(j); + if (TextUtils.equals(getPackageName(approvedPackageOrComponent), packageName)) { + final ComponentName component = ComponentName.unflattenFromString( + approvedPackageOrComponent); + if (component != null && !componentHasBindPermission(component, userId)) { + approved.removeAt(j); + if (DEBUG) { + Slog.v(TAG, "Removing " + approvedPackageOrComponent + + " from approved list; no bind permission found " + + mConfig.bindPermission); + } + } + } + } + } + } + } + - try { - ServiceInfo info = mPm.getServiceInfo(component, - PackageManager.GET_META_DATA - | PackageManager.MATCH_DIRECT_BOOT_AWARE - | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, - userId); - if (info == null) { - Slog.w(TAG, "Not binding " + getCaption() + " service " + component - + ": service not found"); - continue; - } - if (!mConfig.bindPermission.equals(info.permission)) { - Slog.w(TAG, "Not binding " + getCaption() + " service " + component - + ": it does not require the permission " + mConfig.bindPermission); - continue; - } - Slog.v(TAG, - "enabling " + getCaption() + " for " + userId + ": " + component); - registerService(info, userId); - } catch (RemoteException e) { - e.rethrowFromSystemServer(); + ServiceInfo info = getServiceInfo(component, userId); + if (info == null) { + Slog.w(TAG, "Not binding " + getCaption() + " service " + component + + ": service not found"); + continue; + if (!mConfig.bindPermission.equals(info.permission)) { + Slog.w(TAG, "Not binding " + getCaption() + " service " + component + + ": it does not require the permission " + mConfig.bindPermission); + continue; + } + Slog.v(TAG, + "enabling " + getCaption() + " for " + userId + ": " + component); + registerService(info, userId);
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/notification/ManagedServices.java
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
} } } // Attempt to bind to services, skipping those that cannot be found or lack the permission. private void bindToServices(SparseArray<Set<ComponentName>> componentsToBind) { for (int i = 0; i < componentsToBind.size(); i++) { final int userId = componentsToBind.keyAt(i); final Set<ComponentName> add = componentsToBind.get(userId); for (ComponentName component : add) {
+ show +
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
try { ServiceInfo info = mPm.getServiceInfo(component, PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, userId); if (info == null) { Slog.w(TAG, "Not binding " + getCaption() + " service " + component + ": service not found"); continue; } if (!mConfig.bindPermission.equals(info.permission)) { Slog.w(TAG, "Not binding " + getCaption() + " service " + component + ": it does not require the permission " + mConfig.bindPermission); continue; } Slog.v(TAG, "enabling " + getCaption() + " for " + userId + ": " + component); registerService(info, userId); } catch (RemoteException e) { e.rethrowFromSystemServer();
+ show +
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
} } } } /** * Version of registerService that takes the name of a service component to bind to. */ @VisibleForTesting void registerService(final ServiceInfo si, final int userId) {

[CVE-2019-2219_1.diff] NotificationManagerService.java #18
- // tell the assistant service about the notification - if (mAssistants.isEnabled()) { - mAssistants.onNotificationEnqueuedLocked(r); - mHandler.postDelayed(new PostNotificationRunnable(r.getKey()), - DELAY_FOR_ASSISTANT_TIME); - } else { - mHandler.post(new PostNotificationRunnable(r.getKey())); - } + postPostNotificationRunnableMaybeDelayedLocked( + r, new PostNotificationRunnable(r.getKey())); + /** + * Mainly needed as a hook for tests which require setting up enqueued-but-not-posted + * notification records + */ + @GuardedBy("mNotificationLock") + protected void postPostNotificationRunnableMaybeDelayedLocked( + NotificationRecord r, + PostNotificationRunnable runnable) { + // tell the assistant service about the notification + if (mAssistants.isEnabled()) { + mAssistants.onNotificationEnqueuedLocked(r); + mHandler.postDelayed(runnable, DELAY_FOR_ASSISTANT_TIME); + } else { + mHandler.post(runnable); + } + } +
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
int enqueueStatus = EVENTLOG_ENQUEUE_STATUS_NEW; if (old != null) { enqueueStatus = EVENTLOG_ENQUEUE_STATUS_UPDATE; } EventLogTags.writeNotificationEnqueue(callingUid, callingPid, pkg, id, tag, userId, notification.toString(), enqueueStatus); } // tell the assistant service about the notification
+ show +
6945
6946
6947
6948
6949
6950
if (mAssistants.isEnabled()) { mAssistants.onNotificationEnqueuedLocked(r); mHandler.postDelayed(new PostNotificationRunnable(r.getKey()), DELAY_FOR_ASSISTANT_TIME); } else { mHandler.post(new PostNotificationRunnable(r.getKey()));
+ show +
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
} } } } @GuardedBy("mNotificationLock") boolean isPackagePausedOrSuspended(String pkg, int uid) { boolean isPaused; final PackageManagerInternal pmi = LocalServices.getService(

[CVE-2020-27059_1.diff] AuthenticationClient.java #3
+ protected ActivityTaskManager getActivityTaskManager() { + return ActivityTaskManager.getInstance(); + } + - } else { - // Allow system-defined limit of number of attempts before giving up - final @LockoutTracker.LockoutMode int lockoutMode = - handleFailedAttempt(getTargetUserId()); - if (lockoutMode != LockoutTracker.LOCKOUT_NONE) { - markAlreadyDone(); + } else { // not authenticated + if (isBackgroundAuth) { + Slog.e(TAG, "cancelling due to background auth"); + cancel(); + } else { + // Allow system-defined limit of number of attempts before giving up + final @LockoutTracker.LockoutMode int lockoutMode = + handleFailedAttempt(getTargetUserId()); + if (lockoutMode != LockoutTracker.LOCKOUT_NONE) { + markAlreadyDone(); + } + + final CoexCoordinator coordinator = CoexCoordinator.getInstance(); + coordinator.onAuthenticationRejected(SystemClock.uptimeMillis(), this, lockoutMode, + new CoexCoordinator.Callback() { + @Override + public void sendAuthenticationResult(boolean addAuthTokenIfStrong) { + if (listener != null) { + try { + listener.onAuthenticationFailed(getSensorId()); + } catch (RemoteException e) { + Slog.e(TAG, "Unable to notify listener", e); + } + } + } + + @Override + public void sendHapticFeedback() { + if (listener != null && mShouldVibrate) { + vibrateError(); + } + } + + @Override + public void handleLifecycleAfterAuth() { + AuthenticationClient.this.handleLifecycleAfterAuth(false /* authenticated */); + } + + @Override + public void sendAuthenticationCanceled() { + sendCancelOnly(listener); + } + }); - - final CoexCoordinator coordinator = CoexCoordinator.getInstance(); - coordinator.onAuthenticationRejected(SystemClock.uptimeMillis(), this, lockoutMode, - new CoexCoordinator.Callback() { - @Override - public void sendAuthenticationResult(boolean addAuthTokenIfStrong) { - if (listener != null) { - try { - listener.onAuthenticationFailed(getSensorId()); - } catch (RemoteException e) { - Slog.e(TAG, "Unable to notify listener", e); - } - } - } - - @Override - public void sendHapticFeedback() { - if (listener != null && mShouldVibrate) { - vibrateError(); - } - } - - @Override - public void handleLifecycleAfterAuth() { - AuthenticationClient.this.handleLifecycleAfterAuth(false /* authenticated */); - } - - @Override - public void sendAuthenticationCanceled() { - sendCancelOnly(listener); - } - });
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java
315
316
317
318
319
320
321
322
323
324
@Override public void handleLifecycleAfterAuth() { AuthenticationClient.this.handleLifecycleAfterAuth(true /* authenticated */); } @Override public void sendAuthenticationCanceled() { sendCancelOnly(listener); } });
+ show +
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
} else { // Allow system-defined limit of number of attempts before giving up final @LockoutTracker.LockoutMode int lockoutMode = handleFailedAttempt(getTargetUserId()); if (lockoutMode != LockoutTracker.LOCKOUT_NONE) { markAlreadyDone(); } final CoexCoordinator coordinator = CoexCoordinator.getInstance(); coordinator.onAuthenticationRejected(SystemClock.uptimeMillis(), this, lockoutMode, new CoexCoordinator.Callback() { @Override public void sendAuthenticationResult(boolean addAuthTokenIfStrong) { if (listener != null) { try { listener.onAuthenticationFailed(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Unable to notify listener", e); } } } @Override public void sendHapticFeedback() { if (listener != null && mShouldVibrate) { vibrateError(); } } @Override public void handleLifecycleAfterAuth() { AuthenticationClient.this.handleLifecycleAfterAuth(false /* authenticated */); } @Override public void sendAuthenticationCanceled() { sendCancelOnly(listener); } });
+ show +
364
365
366
367
368
369
370
371
372
373
} } /** * Only call this method on interfaces where lockout does not come from onError, I.E. the * old HIDL implementation. */ protected void onLockoutTimed(long durationMillis) { final ClientMonitorCallbackConverter listener = getListener(); final CoexCoordinator coordinator = CoexCoordinator.getInstance();

[CVE-2024-31314_1.diff] ShortcutService.java #6
- private void reportShortcutUsedInternal(String packageName, String shortcutId, int userId) { - final long token = injectClearCallingIdentity(); - try { - mUsageStatsManagerInternal.reportShortcutUsage(packageName, shortcutId, userId); - } finally { - injectRestoreCallingIdentity(token); - } - } -
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/pm/ShortcutService.java
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
reportShortcutUsedInternal(packageName, shortcutId, userId); ret.complete(true); } catch (Exception e) { ret.completeExceptionally(e); } }); return ret; }
+ show +
2852
2853
2854
2855
2856
2857
private void reportShortcutUsedInternal(String packageName, String shortcutId, int userId) { final long token = injectClearCallingIdentity(); try { mUsageStatsManagerInternal.reportShortcutUsage(packageName, shortcutId, userId); } finally { injectRestoreCallingIdentity(token);
+ show +
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
} } @Override public boolean isRequestPinItemSupported(int callingUserId, int requestType) { verifyCallerUserId(callingUserId); final long token = injectClearCallingIdentity(); try { return mShortcutRequestPinProcessor

[CVE-2021-0923_1.diff] PermissionManagerService.java #3
- EventLog.writeEvent(0x534e4554, "154505240", uid, - "Revoking permission " + permName + " from package " - + packageName + " due to definition change"); - EventLog.writeEvent(0x534e4554, "168319670", uid, - "Revoking permission " + permName + " from package " - + packageName + " due to definition change"); + if (isInternalPermission) { + EventLog.writeEvent(0x534e4554, "195338390", uid, + "Revoking permission " + permName + " from package " + + packageName + " due to definition change"); + } else { + EventLog.writeEvent(0x534e4554, "154505240", uid, + "Revoking permission " + permName + " from package " + + packageName + " due to definition change"); + EventLog.writeEvent(0x534e4554, "168319670", uid, + "Revoking permission " + permName + " from package " + + packageName + " due to definition change"); + } + packageName + " due to definition change");
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
| FLAG_PERMISSION_GRANTED_BY_DEFAULT | FLAG_PERMISSION_GRANTED_BY_ROLE; if (permissionState == PackageManager.PERMISSION_GRANTED && (flags & flagMask) == 0) { final int uid = UserHandle.getUid(userId, appId); if (isInternalPermission) { EventLog.writeEvent(0x534e4554, "195338390", uid, "Revoking permission " + permName + " from package " + packageName + " due to definition change"); } else {
+ show +
2376
2377
2378
2379
2380
2381
EventLog.writeEvent(0x534e4554, "154505240", uid, "Revoking permission " + permName + " from package " + packageName + " due to definition change"); EventLog.writeEvent(0x534e4554, "168319670", uid, "Revoking permission " + permName + " from package " + packageName + " due to definition change");
+ show +
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
} Slog.e(TAG, "Revoking permission " + permName + " from package " + packageName + " due to definition change"); try { revokeRuntimePermissionInternal(packageName, permName, false, callingUid, userId, null, mDefaultPermissionCallback); } catch (Exception e) { Slog.e(TAG, "Could not revoke " + permName + " from " + packageName, e); }

[CVE-2023-21270_1.diff] PermissionManagerServiceImpl.java #1
+ pkg.getPackageName()); - if ((bp.isNormal() && shouldGrantNormalPermission) - || (bp.isSignature() - && (!bp.isPrivileged() || CollectionUtils.contains( - isPrivilegedPermissionAllowlisted, permName)) - && (CollectionUtils.contains(shouldGrantSignaturePermission, - permName) - || (((bp.isPrivileged() && CollectionUtils.contains( - shouldGrantPrivilegedPermissionIfWasGranted, - permName)) || bp.isDevelopment() || bp.isRole()) - && origState.isPermissionGranted(permName)))) - || (bp.isInternal() - && (!bp.isPrivileged() || CollectionUtils.contains( - isPrivilegedPermissionAllowlisted, permName)) - && (CollectionUtils.contains(shouldGrantInternalPermission, - permName) - || (((bp.isPrivileged() && CollectionUtils.contains( - shouldGrantPrivilegedPermissionIfWasGranted, - permName)) || bp.isDevelopment() || bp.isRole()) - && origState.isPermissionGranted(permName))))) { - // Grant an install permission. - if (uidState.grantPermission(bp)) { - changedInstallPermission = true; + if (bp.isNormal() || bp.isSignature() || bp.isInternal()) { + if ((bp.isNormal() && shouldGrantNormalPermission) + || (bp.isSignature() + && (!bp.isPrivileged() || CollectionUtils.contains( + isPrivilegedPermissionAllowlisted, permName)) + && (CollectionUtils.contains(shouldGrantSignaturePermission, + permName) + || (((bp.isPrivileged() && CollectionUtils.contains( + shouldGrantPrivilegedPermissionIfWasGranted, + permName)) || bp.isDevelopment() + || bp.isRole()) + && origState.isPermissionGranted( + permName)))) + || (bp.isInternal() + && (!bp.isPrivileged() || CollectionUtils.contains( + isPrivilegedPermissionAllowlisted, permName)) + && (CollectionUtils.contains(shouldGrantInternalPermission, + permName) + || (((bp.isPrivileged() && CollectionUtils.contains( + shouldGrantPrivilegedPermissionIfWasGranted, + permName)) || bp.isDevelopment() + || bp.isRole()) + && origState.isPermissionGranted( + permName))))) { + // Grant an install permission. + if (uidState.grantPermission(bp)) { + changedInstallPermission = true; + } + } else { + if (DEBUG_PERMISSIONS) { + boolean wasGranted = uidState.isPermissionGranted(bp.getName()); + if (wasGranted || bp.isAppOp()) { + Slog.i(TAG, (wasGranted ? "Un-granting" : "Not granting") + + " permission " + perm + + " from package " + friendlyName + + " (protectionLevel=" + bp.getProtectionLevel() + + " flags=0x" + + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, + ps)) + + ")"); + } + } + if (uidState.revokePermission(bp)) { + changedInstallPermission = true; + } + PermissionState origPermState = origState.getPermissionState(perm); + int flags = origPermState != null ? origPermState.getFlags() : 0; + uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, flags);
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
shouldGrantNormalPermission = false; } } } if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Considering granting permission " + perm + " to package " + pkg.getPackageName()); }
+ show +
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
if ((bp.isNormal() && shouldGrantNormalPermission) || (bp.isSignature() && (!bp.isPrivileged() || CollectionUtils.contains( isPrivilegedPermissionAllowlisted, permName)) && (CollectionUtils.contains(shouldGrantSignaturePermission, permName) || (((bp.isPrivileged() && CollectionUtils.contains( shouldGrantPrivilegedPermissionIfWasGranted, permName)) || bp.isDevelopment() || bp.isRole()) && origState.isPermissionGranted(permName)))) || (bp.isInternal() && (!bp.isPrivileged() || CollectionUtils.contains( isPrivilegedPermissionAllowlisted, permName)) && (CollectionUtils.contains(shouldGrantInternalPermission, permName) || (((bp.isPrivileged() && CollectionUtils.contains( shouldGrantPrivilegedPermissionIfWasGranted, permName)) || bp.isDevelopment() || bp.isRole()) && origState.isPermissionGranted(permName))))) { // Grant an install permission. if (uidState.grantPermission(bp)) { changedInstallPermission = true;
+ show +
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
} } else if (bp.isRuntime()) { boolean hardRestricted = bp.isHardRestricted(); boolean softRestricted = bp.isSoftRestricted(); // If permission policy is not ready we don't deal with restricted // permissions as the policy may allowlist some permissions. Once // the policy is initialized we would re-evaluate permissions. final boolean permissionPolicyInitialized = isPermissionPolicyInitialized.get(userId);

[CVE-2023-21270_1.diff] PermissionManagerServiceImpl.java #2
- if (DEBUG_PERMISSIONS) { - boolean wasGranted = uidState.isPermissionGranted(bp.getName()); - if (wasGranted || bp.isAppOp()) { - Slog.i(TAG, (wasGranted ? "Un-granting" : "Not granting") - + " permission " + perm - + " from package " + friendlyName - + " (protectionLevel=" + bp.getProtectionLevel() - + " flags=0x" - + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, - ps)) - + ")"); - } - } - if (uidState.removePermissionState(bp.getName())) { - changedInstallPermission = true; - } + Slog.wtf(LOG_TAG, "Unknown permission protection " + bp.getProtection() + + " for permission " + bp.getName());
/media/esteban/ACOS/dotOS/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
} } if (wasChanged) { updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, flags); } else {
+ show +
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
if (DEBUG_PERMISSIONS) { boolean wasGranted = uidState.isPermissionGranted(bp.getName()); if (wasGranted || bp.isAppOp()) { Slog.i(TAG, (wasGranted ? "Un-granting" : "Not granting") + " permission " + perm + " from package " + friendlyName + " (protectionLevel=" + bp.getProtectionLevel() + " flags=0x" + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, ps)) + ")"); } } if (uidState.removePermissionState(bp.getName())) { changedInstallPermission = true;
+ show +
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
} } } if ((changedInstallPermission || replace) && !userState.areInstallPermissionsFixed(ps.name) && !ps.isSystem() || ps.getPkgState().isUpdatedSystemApp()) { // This is the first that we have heard about this package, so the // permissions we have now selected are fixed until explicitly // changed.

[CVE-2023-21291_1.diff] NotificationManagerServiceTest.java #5
+ verify(visitor, times(1)).accept(eq(smallIcon.getUri())); + verify(visitor, times(1)).accept(eq(largeIcon.getUri())); + public void testVisitUris_audioContentsString() throws Exception { + final Uri audioContents = Uri.parse("content://com.example/audio"); + + Bundle extras = new Bundle(); + extras.putString(Notification.EXTRA_AUDIO_CONTENTS_URI, audioContents.toString()); + + Notification n = new Notification.Builder(mContext, "a") + .setContentTitle("notification with uris") + .setSmallIcon(android.R.drawable.sym_def_app_icon) + .addExtras(extras) + .build(); + + Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class); + n.visitUris(visitor); + verify(visitor, times(1)).accept(eq(audioContents)); + } + + @Test + public void testVisitUris_messagingStyle() { + final Icon personIcon1 = Icon.createWithContentUri("content://media/person1"); + final Icon personIcon2 = Icon.createWithContentUri("content://media/person2"); + final Icon personIcon3 = Icon.createWithContentUri("content://media/person3"); + final Person person1 = new Person.Builder() + .setName("Messaging Person 1") + .setIcon(personIcon1) + .build(); + final Person person2 = new Person.Builder() + .setName("Messaging Person 2") + .setIcon(personIcon2) + .build(); + final Person person3 = new Person.Builder() + .setName("Messaging Person 3") + .setIcon(personIcon3) + .build(); + Icon shortcutIcon = Icon.createWithContentUri("content://media/shortcut"); + + Notification.Builder builder = new Notification.Builder(mContext, "a") + .setCategory(Notification.CATEGORY_MESSAGE) + .setContentTitle("new message!") + .setContentText("Conversation Notification") + .setSmallIcon(android.R.drawable.sym_def_app_icon); + Notification.MessagingStyle.Message message1 = new Notification.MessagingStyle.Message( + "Marco?", System.currentTimeMillis(), person2); + Notification.MessagingStyle.Message message2 = new Notification.MessagingStyle.Message( + "Polo!", System.currentTimeMillis(), person3); + Notification.MessagingStyle style = new Notification.MessagingStyle(person1) + .addMessage(message1) + .addMessage(message2) + .setShortcutIcon(shortcutIcon); + builder.setStyle(style); + Notification n = builder.build(); + + Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class); + n.visitUris(visitor); + + verify(visitor, times(1)).accept(eq(shortcutIcon.getUri())); + verify(visitor, times(1)).accept(eq(personIcon1.getUri())); + verify(visitor, times(1)).accept(eq(personIcon2.getUri())); + verify(visitor, times(1)).accept(eq(personIcon3.getUri())); + } + + @Test - public void testVisitUris_audioContentsString() throws Exception { - final Uri audioContents = Uri.parse("content://com.example/audio"); - - Bundle extras = new Bundle(); - extras.putString(Notification.EXTRA_AUDIO_CONTENTS_URI, audioContents.toString()); - - Notification n = new Notification.Builder(mContext, "a") - .setContentTitle("notification with uris") - .setSmallIcon(android.R.drawable.sym_def_app_icon) - .addExtras(extras) - .build(); - - Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class); - n.visitUris(visitor); - verify(visitor, times(1)).accept(eq(audioContents)); - } - - @Test
/media/esteban/ACOS/dotOS/frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
.addExtras(extras) .build(); Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class); n.visitUris(visitor); verify(visitor, times(1)).accept(eq(audioContents)); verify(visitor, times(1)).accept(eq(backgroundImage)); } @Test
+ show +
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
public void testVisitUris_audioContentsString() throws Exception { final Uri audioContents = Uri.parse("content://com.example/audio"); Bundle extras = new Bundle(); extras.putString(Notification.EXTRA_AUDIO_CONTENTS_URI, audioContents.toString()); Notification n = new Notification.Builder(mContext, "a") .setContentTitle("notification with uris") .setSmallIcon(android.R.drawable.sym_def_app_icon) .addExtras(extras) .build(); Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class); n.visitUris(visitor); verify(visitor, times(1)).accept(eq(audioContents)); } @Test
+ show +
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
public void testSetNotificationPolicy_preP_setOldFields() { ZenModeHelper mZenModeHelper = mock(ZenModeHelper.class); mService.mZenModeHelper = mZenModeHelper; NotificationManager.Policy userPolicy = new NotificationManager.Policy(0, 0, 0, SUPPRESSED_EFFECT_BADGE); when(mZenModeHelper.getNotificationPolicy()).thenReturn(userPolicy); NotificationManager.Policy appPolicy = new NotificationManager.Policy(0, 0, 0, SUPPRESSED_EFFECT_SCREEN_ON | SUPPRESSED_EFFECT_SCREEN_OFF);

[CVE-2023-21104_1.diff] TaskFragmentOrganizerControllerTest.java #2
- public void testWindowContainerTransaction_setTaskFragmentOrganizer() { - mOrganizer.applyTransaction(mTransaction); - - assertEquals(mIOrganizer, mTransaction.getTaskFragmentOrganizer()); - - mTransaction = new WindowContainerTransaction(); - mOrganizer.applySyncTransaction( - mTransaction, mock(WindowContainerTransactionCallback.class)); - - assertEquals(mIOrganizer, mTransaction.getTaskFragmentOrganizer()); - } - - @Test
/media/esteban/ACOS/dotOS/frameworks/base/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
221
222
223
224
225
226
227
228
229
230
mController.registerRemoteAnimations(mIOrganizer, mDefinition); assertEquals(mDefinition, mController.getRemoteAnimationDefinition(mIOrganizer)); mController.unregisterRemoteAnimations(mIOrganizer); assertNull(mController.getRemoteAnimationDefinition(mIOrganizer)); } @Test
+ show +
231
232
233
234
235
236
237
238
239
240
241
242
243
public void testWindowContainerTransaction_setTaskFragmentOrganizer() { mOrganizer.applyTransaction(mTransaction); assertEquals(mIOrganizer, mTransaction.getTaskFragmentOrganizer()); mTransaction = new WindowContainerTransaction(); mOrganizer.applySyncTransaction( mTransaction, mock(WindowContainerTransactionCallback.class)); assertEquals(mIOrganizer, mTransaction.getTaskFragmentOrganizer()); } @Test
+ show +
244
245
246
247
248
249
250
251
252
253
public void testApplyTransaction_enforceConfigurationChangeOnOrganizedTaskFragment() throws RemoteException { mOrganizer.applyTransaction(mTransaction); // Throw exception if the transaction is trying to change a window that is not organized by // the organizer. mTransaction.setBounds(mFragmentWindowToken, new Rect(0, 0, 100, 100)); assertThrows(SecurityException.class, () -> { try {

[CVE-2024-31318_1.diff] CompanionDeviceManagerService.java #2
- public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, - String[] args, ShellCallback callback, ResultReceiver resultReceiver) - throws RemoteException { - new ShellCmd().exec(this, in, out, err, args, callback, resultReceiver); + public int handleShellCommand(@NonNull ParcelFileDescriptor in, + @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err, + @NonNull String[] args) { + return new ShellCmd() + .exec(this, in.getFileDescriptor(), out.getFileDescriptor(), + err.getFileDescriptor(), args);
/media/esteban/ACOS/dotOS/frameworks/base/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
700
701
702
703
704
705
706
707
708
709
@Override public boolean canPairWithoutPrompt( String packageName, String deviceMacAddress, int userId) { return CollectionUtils.any( getAllAssociations(userId, packageName, deviceMacAddress), a -> System.currentTimeMillis() - a.getTimeApprovedMs() < PAIR_WITHOUT_PROMPT_WINDOW_MS); } @Override
+ show +
710
711
712
713
public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, String[] args, ShellCallback callback, ResultReceiver resultReceiver) throws RemoteException { new ShellCmd().exec(this, in, out, err, args, callback, resultReceiver);
+ show +
714
715
716
717
718
719
720
721
722
723
} @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout, @Nullable String[] args) { if (!DumpUtils.checkDumpAndUsageStatsPermission(getContext(), LOG_TAG, fout)) { return; }

[CVE-2018-9554_1.diff] IMediaExtractor.cpp #2
+#include <binder/PermissionCache.h> - out.append("Recent extractors, most recent first:\n"); - { - Mutex::Autolock lock(sExtractorsLock); - for (size_t i = 0; i < sExtractors.size(); i++) { - const ExtractorInstance &instance = sExtractors.itemAt(i); - out.append(" "); - out.append(instance.toString()); + const IPCThreadState* ipc = IPCThreadState::self(); + const int pid = ipc->getCallingPid(); + const int uid = ipc->getCallingUid(); + if (!PermissionCache::checkPermission(String16("android.permission.DUMP"), pid, uid)) { + out.appendFormat("Permission Denial: " + "can't dump MediaExtractor from pid=%d, uid=%d\n", pid, uid); + } else { + out.append("Recent extractors, most recent first:\n"); + { + Mutex::Autolock lock(sExtractorsLock); + for (size_t i = 0; i < sExtractors.size(); i++) { + const ExtractorInstance &instance = sExtractors.itemAt(i); + out.append(" "); + out.append(instance.toString()); + }
/media/esteban/ACOS/dotOS/frameworks/av/media/libmedia/IMediaExtractor.cpp
369
370
371
372
373
374
375
376
377
378
status_t dumpExtractors(int fd, const Vector<String16>&) { String8 out; const IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); const int uid = ipc->getCallingUid(); if (!PermissionCache::checkPermission(String16("android.permission.DUMP"), pid, uid)) { out.appendFormat("Permission Denial: " "can't dump MediaExtractor from pid=%d, uid=%d\n", pid, uid); } else {
+ show +
379
380
381
382
383
384
385
out.append("Recent extractors, most recent first:\n"); { Mutex::Autolock lock(sExtractorsLock); for (size_t i = 0; i < sExtractors.size(); i++) { const ExtractorInstance &instance = sExtractors.itemAt(i); out.append(" "); out.append(instance.toString());
+ show +
386
387
388
389
390
391
392
393
394
395
} } } write(fd, out.string(), out.size()); return OK; } } // namespace android

[CVE-2018-9521_1.diff] NuPlayer2CCDecoder.cpp #4
+ if (mDTVCCPacket->size() + 2 > mDTVCCPacket->capacity()) { + return false; + } + if (mDTVCCPacket->size() + 2 > mDTVCCPacket->capacity()) { + return false; + } + if (line21CCBuf->size() + sizeof(cc) > line21CCBuf->capacity()) { + return false; + } + if (ccPacket->capacity() == 0) { + return false; + } - for (ssize_t i = 0; i <= index; ++i) { - sp<ABuffer> buf = mCCMap.valueAt(i); - memcpy(ccBuf->data() + ccBuf->size(), buf->data(), buf->size()); - ccBuf->setRange(0, ccBuf->size() + buf->size()); + if (ccBuf->capacity() > 0) { + for (ssize_t i = 0; i <= index; ++i) { + sp<ABuffer> buf = mCCMap.valueAt(i); + memcpy(ccBuf->data() + ccBuf->size(), buf->data(), buf->size()); + ccBuf->setRange(0, ccBuf->size() + buf->size()); + }
/media/esteban/ACOS/dotOS/frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayerCCDecoder.cpp
555
556
557
558
559
560
561
562
563
564
} else { size_t size = 0; for (ssize_t i = 0; i <= index; ++i) { size += mCCMap.valueAt(i)->size(); } ccBuf = new ABuffer(size); ccBuf->setRange(0, 0);
+ show +
565
566
567
568
for (ssize_t i = 0; i <= index; ++i) { sp<ABuffer> buf = mCCMap.valueAt(i); memcpy(ccBuf->data() + ccBuf->size(), buf->data(), buf->size()); ccBuf->setRange(0, ccBuf->size() + buf->size());
+ show +
569
570
571
572
573
574
575
576
577
578
} } if (ccBuf->size() > 0) { #if 0 dumpBytePair(ccBuf); #endif ccBuf->meta()->setInt32("track-index", mSelectedTrack); ccBuf->meta()->setInt64("timeUs", timeUs);

[CVE-2023-20933_1.diff] MediaCodec.cpp #14
+// this is the user-callable entry point - // shouldn't happen, but be safe - if (mMetricsHandle == 0) { - return UNKNOWN_ERROR; + sp<AMessage> msg = new AMessage(kWhatGetMetrics, this); + sp<AMessage> response; + status_t err; + if ((err = PostAndAwaitResponse(msg, &response)) != OK) { + return err; - // update any in-flight data that's not carried within the record - updateMediametrics(); - - // send it back to the caller. - reply = mediametrics_dup(mMetricsHandle); - - updateEphemeralMediametrics(reply); + CHECK(response->findInt64("metrics", &reply)); +// runs on the looper thread (for mutex purposes) +void MediaCodec::onGetMetrics(const sp<AMessage>& msg) { + + mediametrics_handle_t results = 0; + + sp<AReplyToken> replyID; + CHECK(msg->senderAwaitsResponse(&replyID)); + + if (mMetricsHandle != 0) { + updateMediametrics(); + results = mediametrics_dup(mMetricsHandle); + updateEphemeralMediametrics(results); + } else { + results = mediametrics_dup(mMetricsHandle); + } + + sp<AMessage> response = new AMessage; + response->setInt64("metrics", results); + response->postReply(replyID); +} +
/media/esteban/ACOS/dotOS/frameworks/av/media/libstagefright/MediaCodec.cpp
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
*codecInfo = static_cast<MediaCodecInfo *>(obj.get()); return OK; } status_t MediaCodec::getMetrics(mediametrics_handle_t &reply) { reply = 0; // shouldn't happen, but be safe
+ show +
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
if (mMetricsHandle == 0) { return UNKNOWN_ERROR; } // update any in-flight data that's not carried within the record updateMediametrics(); // send it back to the caller. reply = mediametrics_dup(mMetricsHandle); updateEphemeralMediametrics(reply);
+ show +
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
return OK; } status_t MediaCodec::getInputBuffers(Vector<sp<MediaCodecBuffer> > *buffers) const { sp<AMessage> msg = new AMessage(kWhatGetBuffers, this); msg->setInt32("portIndex", kPortIndexInput); msg->setPointer("buffers", buffers); sp<AMessage> response;

[CVE-2022-20496_1.diff] NuMediaExtractor.cpp #2
+status_t NuMediaExtractor::initMediaExtractor(const sp<DataSource>& dataSource) { + status_t err = OK; + + mImpl = MediaExtractorFactory::Create(dataSource); + if (mImpl == NULL) { + ALOGE("%s: failed to create MediaExtractor", __FUNCTION__); + return ERROR_UNSUPPORTED; + } + + setEntryPointToRemoteMediaExtractor(); + + if (!mCasToken.empty()) { + err = mImpl->setMediaCas(mCasToken); + if (err != OK) { + ALOGE("%s: failed to setMediaCas (%d)", __FUNCTION__, err); + return err; + } + } + + // Get the name of the implementation. + mName = mImpl->name(); + + // Update the duration and bitrate + err = updateDurationAndBitrate(); + if (err == OK) { + mDataSource = dataSource; + } + + return OK; +} + - mImpl = MediaExtractorFactory::Create(dataSource); - - if (mImpl == NULL) { - return ERROR_UNSUPPORTED; - } - setEntryPointToRemoteMediaExtractor(); - - status_t err = OK; - if (!mCasToken.empty()) { - err = mImpl->setMediaCas(mCasToken); - if (err != OK) { - ALOGE("%s: failed to setMediaCas (%d)", __FUNCTION__, err); - return err; - } - } - - err = updateDurationAndBitrate(); - if (err == OK) { - mDataSource = dataSource; - } - - return OK; + // Initialize MediaExtractor using the data source + return initMediaExtractor(dataSource);
/media/esteban/ACOS/dotOS/frameworks/av/media/libstagefright/NuMediaExtractor.cpp
82
83
84
85
86
87
88
89
90
91
return -EINVAL; } sp<DataSource> dataSource = DataSourceFactory::getInstance()->CreateFromURI(httpService, path, headers); if (dataSource == NULL) { return -ENOENT; }
+ show +
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
mImpl = MediaExtractorFactory::Create(dataSource); if (mImpl == NULL) { return ERROR_UNSUPPORTED; } setEntryPointToRemoteMediaExtractor(); status_t err = OK; if (!mCasToken.empty()) { err = mImpl->setMediaCas(mCasToken); if (err != OK) { ALOGE("%s: failed to setMediaCas (%d)", __FUNCTION__, err); return err; } } err = updateDurationAndBitrate(); if (err == OK) { mDataSource = dataSource; } return OK;
+ show +
114
115
116
117
118
119
120
121
122
123
} status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) { ALOGV("setDataSource fd=%d (%s), offset=%lld, length=%lld", fd, nameForFd(fd).c_str(), (long long) offset, (long long) size); Mutex::Autolock autoLock(mLock); if (mImpl != NULL) {

[CVE-2022-20496_1.diff] NuMediaExtractor.cpp #3
- mImpl = MediaExtractorFactory::Create(fileSource); - - if (mImpl == NULL) { - return ERROR_UNSUPPORTED; - } - setEntryPointToRemoteMediaExtractor(); - - if (!mCasToken.empty()) { - err = mImpl->setMediaCas(mCasToken); - if (err != OK) { - ALOGE("%s: failed to setMediaCas (%d)", __FUNCTION__, err); - return err; - } - } - - err = updateDurationAndBitrate(); - if (err == OK) { - mDataSource = fileSource; - } - - return OK; + // Initialize MediaExtractor using the file source + return initMediaExtractor(fileSource);
/media/esteban/ACOS/dotOS/frameworks/av/media/libstagefright/NuMediaExtractor.cpp
124
125
126
127
128
129
130
131
132
133
return -EINVAL; } sp<FileSource> fileSource = new FileSource(dup(fd), offset, size); status_t err = fileSource->initCheck(); if (err != OK) { return err; }
+ show +
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
mImpl = MediaExtractorFactory::Create(fileSource); if (mImpl == NULL) { return ERROR_UNSUPPORTED; } setEntryPointToRemoteMediaExtractor(); if (!mCasToken.empty()) { err = mImpl->setMediaCas(mCasToken); if (err != OK) { ALOGE("%s: failed to setMediaCas (%d)", __FUNCTION__, err); return err; } } err = updateDurationAndBitrate(); if (err == OK) { mDataSource = fileSource; } return OK;
+ show +
155
156
157
158
159
160
161
162
163
164
} status_t NuMediaExtractor::setDataSource(const sp<DataSource> &source) { Mutex::Autolock autoLock(mLock); if (mImpl != NULL) { return -EINVAL; } status_t err = source->initCheck();

[CVE-2016-3830_1.diff] SoftAAC2.cpp #1
+ if (aac_frame_length < adtsHeaderSize) { + signalError = true; + } else { + inBuffer[0] = (UCHAR *)adtsHeader + adtsHeaderSize; + inBufferLength[0] = aac_frame_length - adtsHeaderSize; - inBuffer[0] = (UCHAR *)adtsHeader + adtsHeaderSize; - inBufferLength[0] = aac_frame_length - adtsHeaderSize; - - inHeader->nOffset += adtsHeaderSize; - inHeader->nFilledLen -= adtsHeaderSize; + inHeader->nOffset += adtsHeaderSize; + inHeader->nFilledLen -= adtsHeaderSize; + }
/media/esteban/ACOS/dotOS/frameworks/av/media/libstagefright/codecs/aacdec/SoftAAC2.cpp
760
761
762
763
764
765
766
767
768
769
"Got %d bytes, frame size according to the ADTS " "header is %u bytes.", inHeader->nFilledLen, aac_frame_length); hexdump(adtsHeader, inHeader->nFilledLen); signalError = true; } else { adtsHeaderSize = (protectionAbsent ? 7 : 9); if (aac_frame_length < adtsHeaderSize) { signalError = true; } else {
+ show +
770
771
772
773
774
inBuffer[0] = (UCHAR *)adtsHeader + adtsHeaderSize; inBufferLength[0] = aac_frame_length - adtsHeaderSize; inHeader->nOffset += adtsHeaderSize; inHeader->nFilledLen -= adtsHeaderSize;
+ show +
775
776
777
778
779
780
781
782
783
784
} } } if (signalError) { mSignalledError = true; notify(OMX_EventError, OMX_ErrorStreamCorrupt, ERROR_MALFORMED, NULL); return; }

[CVE-2017-0760_1.diff] SoftMPEG2.cpp #1
- - if (OK != initDecoder()) { - ALOGE("Failed to initialize decoder"); - notify(OMX_EventError, OMX_ErrorUnsupportedSetting, 0, NULL); - mSignalledError = true; - return; - }
/media/esteban/ACOS/dotOS/frameworks/av/media/libstagefright/codecs/avcdec/SoftAVCDec.cpp
475
476
477
478
479
480
481
482
483
484
BufferInfo *inInfo = NULL; if (mSignalledError) { return; } if (mOutputPortSettingsChange != NONE) { return; } if (NULL == mCodecCtx) {
+ show +
485
486
487
488
489
if (OK != initDecoder()) { ALOGE("Failed to initialize decoder"); notify(OMX_EventError, OMX_ErrorUnsupportedSetting, 0, NULL); mSignalledError = true; return;
+ show +
490
491
492
493
494
495
496
497
498
499
} } if (outputBufferWidth() != mStride) { /* Set the run-time (dynamic) parameters */ mStride = outputBufferWidth(); setParams(mStride); } List<BufferInfo *> &inQueue = getPortQueue(kInputPortIndex); List<BufferInfo *> &outQueue = getPortQueue(kOutputPortIndex);
/media/esteban/ACOS/dotOS/frameworks/av/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp
471
472
473
474
475
476
477
478
479
480
UNUSED(portIndex); if (mSignalledError) { return; } if (mOutputPortSettingsChange != NONE) { return; } if (NULL == mCodecCtx) {
+ show +
481
482
483
484
485
if (OK != initDecoder()) { ALOGE("Failed to initialize decoder"); notify(OMX_EventError, OMX_ErrorUnsupportedSetting, 0, NULL); mSignalledError = true; return;
+ show +
486
487
488
489
490
491
492
493
494
495
} } if (outputBufferWidth() != mStride) { /* Set the run-time (dynamic) parameters */ mStride = outputBufferWidth(); setParams(mStride); } List<BufferInfo *> &inQueue = getPortQueue(kInputPortIndex); List<BufferInfo *> &outQueue = getPortQueue(kOutputPortIndex);
/media/esteban/ACOS/dotOS/frameworks/av/media/libstagefright/codecs/mpeg2dec/SoftMPEG2.cpp
589
590
591
592
593
594
595
596
597
598
UNUSED(portIndex); if (mSignalledError) { return; } if (mOutputPortSettingsChange != NONE) { return; } if (NULL == mCodecCtx) {
+ show +
599
600
601
602
603
if (OK != initDecoder()) { ALOGE("Failed to initialize decoder"); notify(OMX_EventError, OMX_ErrorUnsupportedSetting, 0, NULL); mSignalledError = true; return;
+ show +
604
605
606
607
608
609
610
611
612
613
} } List<BufferInfo *> &inQueue = getPortQueue(kInputPortIndex); List<BufferInfo *> &outQueue = getPortQueue(kOutputPortIndex); if (outputBufferWidth() != mStride) { /* Set the run-time (dynamic) parameters */ mStride = outputBufferWidth(); setParams(mStride);

[CVE-2016-3916_1.diff] camera_metadata.c #4
-size_t calculate_camera_metadata_entry_data_size(uint8_t type, - size_t data_count) { - if (type >= NUM_TYPES) return 0; - size_t data_bytes = data_count * - camera_metadata_type_size[type]; - return data_bytes <= 4 ? 0 : ALIGN_TO(data_bytes, DATA_ALIGNMENT); -} -
/media/esteban/ACOS/dotOS/system/media/camera/src/camera_metadata.c
385
386
387
388
389
390
391
392
393
394
size_t data_bytes = data_count * camera_metadata_type_size[type]; if (data_size) { *data_size = data_bytes <= 4 ? 0 : ALIGN_TO(data_bytes, DATA_ALIGNMENT); } return OK; }
+ show +
395
396
397
398
399
400
401
402
size_t calculate_camera_metadata_entry_data_size(uint8_t type, size_t data_count) { if (type >= NUM_TYPES) return 0; size_t data_bytes = data_count * camera_metadata_type_size[type]; return data_bytes <= 4 ? 0 : ALIGN_TO(data_bytes, DATA_ALIGNMENT);
+ show +
403
404
405
406
407
408
409
410
411
412
} int validate_camera_metadata_structure(const camera_metadata_t *metadata, const size_t *expected_size) { if (metadata == NULL) { ALOGE("%s: metadata is null!", __FUNCTION__); return CAMERA_METADATA_VALIDATION_ERROR; }

[CVE-2018-9488_1.diff] crash_dump.te #1
+ +allow crash_dump { + domain + -bpfloader + -crash_dump + -init + -kernel + -keystore + -logd + -ueventd + -vendor_init + -vold +}:process { ptrace signal sigchld sigstop sigkill }; -allow crash_dump { - domain - -init - -crash_dump - -keystore - -logd -}:process { ptrace signal sigchld sigstop sigkill }; -
/media/esteban/ACOS/dotOS/system/sepolicy/prebuilts/api/26.0/public/crash_dump.te
1
2
3
type crash_dump, domain; type crash_dump_exec, exec_type, file_type;
+ show +
4
5
6
7
8
9
10
allow crash_dump { domain -init -crash_dump -keystore -logd }:process { ptrace signal sigchld sigstop sigkill };
+ show +
11
12
13
14
15
16
17
18
19
20
# crash_dump might inherit CAP_SYS_PTRACE from a privileged process, # which will result in an audit log even when it's allowed to trace. dontaudit crash_dump self:capability { sys_ptrace }; userdebug_or_eng(` allow crash_dump logd:process { ptrace signal sigchld sigstop sigkill }; ') # Use inherited file descriptors
/media/esteban/ACOS/dotOS/system/sepolicy/prebuilts/api/27.0/public/crash_dump.te
1
2
3
type crash_dump, domain; type crash_dump_exec, exec_type, file_type;
+ show +
4
5
6
7
8
9
10
allow crash_dump { domain -init -crash_dump -keystore -logd }:process { ptrace signal sigchld sigstop sigkill };
+ show +
11
12
13
14
15
16
17
18
19
20
# crash_dump might inherit CAP_SYS_PTRACE from a privileged process, # which will result in an audit log even when it's allowed to trace. dontaudit crash_dump self:capability { sys_ptrace }; userdebug_or_eng(` allow crash_dump logd:process { ptrace signal sigchld sigstop sigkill }; # Let crash_dump write to /dev/kmsg_debug crashes that happen before logd comes up. allow crash_dump kmsg_debug_device:chr_file { open append };

[CVE-2018-9488_1.diff] crash_dump.te #1
+ +allow crash_dump { + domain + -bpfloader + -crash_dump + -init + -kernel + -keystore + -logd + -ueventd + -vendor_init + -vold +}:process { ptrace signal sigchld sigstop sigkill }; -allow crash_dump { - domain - -init - -crash_dump - -keystore - -logd -}:process { ptrace signal sigchld sigstop sigkill }; -
/media/esteban/ACOS/dotOS/system/sepolicy/prebuilts/api/26.0/public/crash_dump.te
1
2
3
type crash_dump, domain; type crash_dump_exec, exec_type, file_type;
+ show +
4
5
6
7
8
9
10
allow crash_dump { domain -init -crash_dump -keystore -logd }:process { ptrace signal sigchld sigstop sigkill };
+ show +
11
12
13
14
15
16
17
18
19
20
# crash_dump might inherit CAP_SYS_PTRACE from a privileged process, # which will result in an audit log even when it's allowed to trace. dontaudit crash_dump self:capability { sys_ptrace }; userdebug_or_eng(` allow crash_dump logd:process { ptrace signal sigchld sigstop sigkill }; ') # Use inherited file descriptors
/media/esteban/ACOS/dotOS/system/sepolicy/prebuilts/api/27.0/public/crash_dump.te
1
2
3
type crash_dump, domain; type crash_dump_exec, exec_type, file_type;
+ show +
4
5
6
7
8
9
10
allow crash_dump { domain -init -crash_dump -keystore -logd }:process { ptrace signal sigchld sigstop sigkill };
+ show +
11
12
13
14
15
16
17
18
19
20
# crash_dump might inherit CAP_SYS_PTRACE from a privileged process, # which will result in an audit log even when it's allowed to trace. dontaudit crash_dump self:capability { sys_ptrace }; userdebug_or_eng(` allow crash_dump logd:process { ptrace signal sigchld sigstop sigkill }; # Let crash_dump write to /dev/kmsg_debug crashes that happen before logd comes up. allow crash_dump kmsg_debug_device:chr_file { open append };

[CVE-2023-40084_1.diff] MDnsSdListener.cpp #3
- switch (mPollFds[0].revents) { - case POLLIN: { - char readBuf[2]; - read(mCtrlSocketPair[0], &readBuf, 1); - if (DBG) ALOGD("MDnsSdListener::Monitor got %c", readBuf[0]); - if (memcmp(RESCAN, readBuf, 1) == 0) { - pollCount = rescan(); - } + if (mPollFds[0].revents & POLLHUP) { + free(mPollFds); + free(mPollRefs); + if (VDBG) ALOGD("Monitor thread leaving."); + return; + } + if (mPollFds[0].revents == POLLIN) { + char readBuf[2]; + read(mCtrlSocketPair[0], &readBuf, 1); + if (DBG) ALOGD("MDnsSdListener::Monitor got %c", readBuf[0]); + if (memcmp(RESCAN, readBuf, 1) == 0) { + pollCount = rescan();
/media/esteban/ACOS/dotOS/system/netd/server/MDnsSdListener.cpp
604
605
606
607
608
609
610
611
612
613
if (VDBG) { ALOGD("Monitor found [%d].revents = %d - calling ProcessResults", i, mPollFds[i].revents); } std::lock_guard guard(mMutex); DNSServiceProcessResult(*(mPollRefs[i])); mPollFds[i].revents = 0; } } if (VDBG) ALOGD("controlSocket shows revent= %d", mPollFds[0].revents);
+ show +
614
615
616
617
618
619
620
switch (mPollFds[0].revents) { case POLLIN: { char readBuf[2]; read(mCtrlSocketPair[0], &readBuf, 1); if (DBG) ALOGD("MDnsSdListener::Monitor got %c", readBuf[0]); if (memcmp(RESCAN, readBuf, 1) == 0) { pollCount = rescan();
+ show +
621
622
623
624
625
626
627
628
629
630
} } } mPollFds[0].revents = 0; } else { if (VDBG) ALOGD("MDnsSdListener::Monitor poll timed out"); } } free(mPollFds); free(mPollRefs);

[CVE-2021-39673_1.diff] bta_dm_act.cc #1
- - /* Check the length of the paired devices, and if 0 then reset IRK */ - auto paired_devices = btif_config_get_paired_devices(); - if (paired_devices.empty()) { - LOG_INFO("Last paired device removed, resetting IRK"); - btm_ble_reset_id(); - }
/media/esteban/ACOS/dotOS/system/bt/bta/dm/bta_dm_act.cc
644
645
646
647
648
649
650
651
652
653
if (!is_bd_addr_connected) { bta_dm_process_remove_device(bd_addr); } /* Delete the other paired device too */ if (!other_address_connected && !other_address.IsEmpty()) { bta_dm_process_remove_device(other_address); } /* Check the length of the paired devices, and if 0 then reset IRK */
+ show +
654
655
656
657
auto paired_devices = btif_config_get_paired_devices(); if (paired_devices.empty()) { LOG_INFO("Last paired device removed, resetting IRK"); btm_ble_reset_id();
+ show +
658
659
660
661
662
663
664
665
666
667
} } /******************************************************************************* * * Function bta_dm_add_device * * Description This function adds a Link Key to an security database entry. * It is normally called during host startup to restore all * required information stored in the NVRAM.

[CVE-2022-20361_1.diff] btif_dm.cc #2
- is_bonded_device_removed = (bluetooth::shim::is_gd_security_enabled()) - ? true - : (btif_storage_remove_bonded_device( - &bd_addr) == BT_STATUS_SUCCESS); + is_bonded_device_removed = false;
/media/esteban/ACOS/dotOS/system/bt/btif/src/btif_dm.cc
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
&bd_addr) == BT_STATUS_SUCCESS); } else { is_bonded_device_removed = true; } status = BT_STATUS_AUTH_REJECTED; break; /* map the auth failure codes, so we can retry pairing if necessary */ case HCI_ERR_AUTH_FAILURE: case HCI_ERR_KEY_MISSING:
+ show +
1058
1059
1060
1061
is_bonded_device_removed = (bluetooth::shim::is_gd_security_enabled()) ? true : (btif_storage_remove_bonded_device( &bd_addr) == BT_STATUS_SUCCESS);
+ show +
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
[[fallthrough]]; case HCI_ERR_HOST_REJECT_SECURITY: case HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE: case HCI_ERR_UNIT_KEY_USED: case HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED: case HCI_ERR_INSUFFCIENT_SECURITY: case HCI_ERR_PEER_USER: case HCI_ERR_UNSPECIFIED: BTIF_TRACE_DEBUG(" %s() Authentication fail reason %d", __func__, p_auth_cmpl->fail_reason);
/media/esteban/ACOS/dotOS/system/bt/btif/src/btif_dm.cc
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
break; default: status = BT_STATUS_FAIL; } /* Special Handling for HID Devices */ if (check_cod(&bd_addr, COD_HID_POINTING)) { /* Remove Device as bonded in nvram as authentication failed */ BTIF_TRACE_DEBUG("%s(): removing hid pointing device from nvram", __func__);
+ show +
1092
1093
1094
1095
is_bonded_device_removed = (bluetooth::shim::is_gd_security_enabled()) ? true : (btif_storage_remove_bonded_device( &bd_addr) == BT_STATUS_SUCCESS);
+ show +
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
} // Report bond state change to java only if we are bonding to a device or // a device is removed from the pairing list. if (pairing_cb.state == BT_BOND_STATE_BONDING || is_bonded_device_removed) { bond_state_changed(status, bd_addr, state); } } } /******************************************************************************